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

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

glCanvas.setSize(640, 480);

И он добавляется к панели следующим образом

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

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

1 Ответ

0 голосов
/ 15 мая 2019

Если вам нужно реагировать на изменение размера 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);
  }
});
...