【发布时间】:2010-10-26 09:12:18
【问题描述】:
我正在尝试修改 GUI。它正在托管一个显示 JOGL 内容的 GLCanvas。
这里是设置它的代码:
private void setupWindow() {
this.frame = new JFrame(WINDOW_TITLE);
frame.setSize(width, height);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
menuBar.add(menu);
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener(listener);
menu.add(exitItem);
frame.setJMenuBar(menuBar);
}
目前,画布占据了窗口中除菜单栏外的整个空间。我想为窗口中的其他控件腾出空间,例如按钮和列表框。我该怎么做?
我尝试插入以下内容,但没有成功:
private void setupWindow() {
this.frame = new JFrame(WINDOW_TITLE);
frame.setSize(width, height);
// ** inserted the following:
JPanel canvasPanel = new JPanel(new BorderLayout());
canvasPanel.add(canvas);
canvasPanel.setSize(30, 40);
canvasPanel.setVisible(true);
// **
frame.add(canvasPanel);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
menuBar.add(menu);
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener(listener);
menu.add(exitItem);
frame.setJMenuBar(menuBar);
}
这根本不会修改窗口的外观。
我应该在这里做什么?我对 Java GUI 不太熟悉。
更新:将构造函数的参数从 BorderLayout 更改为 FlowLayout 会导致 GLCanvas 消失。
【问题讨论】:
-
用 frame.setDefaultCloseOperation(EXIT_ON_CLOSE) 替换你的窗口监听器
标签: java user-interface swing jogl