0

我在带有 BorderLayout 的 jpanel 中有一个 glcanvas。画布的大小应取决于窗口大小。初始大小通过设置

glCanvas.setSize(640, 480);

它像这样添加到面板中

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

然而,画布的大小是固定的,我框架中其他组件的所有面板都只是调整大小。

4

1 回答 1

0

如果您必须JPanel“手动”对调整大小做出反应,您可以使用https://docs.oracle.com/javase/tutorial/uiswing/events/componentlistener.htmlComponentListener中所述的

假设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);
  }
});
于 2019-05-15T08:50:33.127 回答