Я пытаюсь изменить GUI. В нем размещается GLCanvas, отображающий содержимое JOGL.Java: Сложность с Swing
Вот код, чтобы настроить его:
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.
Update: Изменение аргумент конструктора из BorderLayout
в FlowLayout
вызывает GLCanvas исчезнуть.
замените вашего слушателя окна на frame.setDefaultCloseOperation (EXIT_ON_CLOSE) – Syntax