Как расширить / сжать 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);
}
});