无法将 JMenuBar 添加到扩展的 JFrame
Posted
技术标签:
【中文标题】无法将 JMenuBar 添加到扩展的 JFrame【英文标题】:Trouble adding JMenuBar to extended JFrame 【发布时间】:2013-03-04 08:53:50 【问题描述】:我的 Main
类扩展了 JFrame
并且由于某种原因,我无法正确显示我的 MenuBar
和项目。添加菜单栏有什么特殊的方法吗?
public class Main extends JFrame
// DRIVER
public static void main(String[] args)
EventQueue.invokeLater(new Runnable()
public void run()
try
Main window = new Main();
catch (Exception e)
e.printStackTrace();
);
private JMenuBar menuBar;
private JMenu menu,
menuFile;
private JMenuItem menuItemNew,
menuItemExit;
...
// CONSTRUCTOR
public Main()
initializeWindow();
initializeMenu();
private void initializeWindow()
setTitle(TITLE + " " + VERSION);
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setBackground(Color.DARK_GRAY);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
backgroundColor = new GradientBackground(WINDOW_WIDTH, WINDOW_HEIGHT);
private void initializeMenu()
// Menubar
menuBar = new JMenuBar();
menuBar.setBounds(0, 0, WINDOW_WIDTH, 72);
menuBar.setBackground(Color.LIGHT_GRAY);
menuBar.setVisible(true);
setJMenuBar(menuBar);
// Menu title
menu = new JMenu();
menu.setForeground(Color.BLACK);
menuBar.add(menu);
// File Option
menuFile = new JMenu("FILE");
menuFile.setForeground(Color.BLACK);
menuFile.setBackground(Color.DARK_GRAY);
menuBar.add(menuFile);
// New File
menuItemNew = new JMenuItem("New");
menuItemNew.setForeground(Color.BLACK);
menuItemNew.setBackground(Color.DARK_GRAY);
menuFile.add(menuItemNew);
// New File
menuItemExit = new JMenuItem("Exit");
menuItemExit.setForeground(Color.BLACK);
menuItemExit.setBackground(Color.DARK_GRAY);
menuItemExit.setEnabled(true);
menuFile.add(menuItemExit);
getContentPane().add(menuBar);
// END initializeMenu()
【问题讨论】:
setJMenuBar(menuBar);
就够了,不用getContentPane().add(menuBar);
。
1- 先尝试调用 initializeMenu。 2- 为什么要将 menuBar 添加到 contentPane?
删除该呼叫:getContentPane().add(menuBar);
【参考方案1】:
我认为您在寻找 JFrame.setMenuBar 而不是 add(JMenuBar)
Java 5 和更新版本不需要getContentPane()
不要扩展JFrame
,将这个Object
创建为local variable
【讨论】:
以上是关于无法将 JMenuBar 添加到扩展的 JFrame的主要内容,如果未能解决你的问题,请参考以下文章