无法将JMenuBar添加到扩展的JFrame

时间:2013-03-04 08:53:51

标签: java swing jframe menubar

我的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()

1 个答案:

答案 0 :(得分:1)

  • 我认为您正在寻找JFrame.setMenuBar而不是add(JMenuBar)

  • Java 5和更新版本

  • 没有必需的getContentPane()
  • 不要展开JFrame,将此Object创建为local variable