Как расширить / сжать glcanvas (Jogl), если пользователь изменяет размеры фрейма?

У меня есть glcanvas внутри jpanel с BorderLayout. Размер холста должен зависеть от размера окна. Начальный размер устанавливается через

glCanvas.setSize(640, 480);

И это добавляется к панели, как это

jPanel3DModel.add(Model3DCanvas.getInstance().getCanvas());
jPanelRight.add(jPanel3DModel, BorderLayout.NORTH);

Однако размер холста является фиксированным, и все панели других компонентов в моем кадре просто меняются.

1 ответ

Если вы должны реагировать на JPanel изменить размер "вручную", вы можете использовать ComponentListener как описано в https://docs.oracle.com/javase/tutorial/uiswing/events/componentlistener.html

Если предположить, canvas это ваш GLCanvas и jpanel компонент, от которого зависит изменение размера холста.

jPanel.addComponentListener(new java.awt.event.ComponentAdapter() {
  public void componentResized(java.awt.event.ComponentEvent event) {
    int width=event.getComponent().getWidth();
    int height=event.getComponent().getHeight();
    canvas.setSize(width,height);
  }
});
Другие вопросы по тегам