我正在尝试将 JMenuBar 的子类添加到用户界面,但由于某种原因它从未出现过。我曾尝试使用 JFrame.setJMenubar() 和 JFrame.add(),我曾尝试从 SwingUtilities.invokeLater() 调用等中添加它...在使用 JMenuBar 本身而不是子类时它仍然有效,所以我怀疑它与此有关。
这是初始化应用程序窗口的代码:
public DramaSimWindow() {
initializeSelf();
initializeContainers();
this.setVisible(true);
}
private void initializeSelf() {
initializeContentPane();
this.setBounds(100, 100, 800, 500);
this.setJMenuBar(new DramaSimMenuBar());
this.setResizable(false);
}
这是 JMenuBar 的子类,它作为私有类位于主窗口类中:
private class DramaSimMenuBar extends JMenuBar {
private static final long serialVersionUID = 1L;
public DramaSimMenuBar() {
initializeSelf();
}
private void initializeSelf() {
menuBar = new JMenuBar();
initializeFileMenu();
initializeEditMenu();
}
private void initializeFileMenu() {
JMenu fileMenu = new JMenu("File");
fileMenu.add(new JMenuItem("New"));
fileMenu.add(new JMenuItem("Open"));
fileMenu.add(new JMenuItem("Save"));
fileMenu.add(new JMenuItem("Save as"));
fileMenu.add(new JMenuItem("Exit"));
menuBar.add(fileMenu);
}
private void initializeEditMenu() {
JMenu editMenu = new JMenu("Edit");
editMenu.add(new JMenuItem("Copy"));
editMenu.add(new JMenuItem("Cut"));
editMenu.add(new JMenuItem("Paste"));
menuBar.add(editMenu);
}
}