【问题标题】:Trouble adding JMenuBar to extended JFrame无法将 JMenuBar 添加到扩展的 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);

标签: java swing jframe menubar


【解决方案1】:
  • 我认为您在寻找 JFrame.setMenuBar 而不是 add(JMenuBar)

  • Java 5 和更新版本不需要getContentPane()

  • 不要扩展JFrame,将这个Object创建为local variable

【讨论】:

    猜你喜欢
    • 2012-11-21
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多