JMenuBar没有显示

时间:2012-05-27 03:51:14

标签: java swing jmenu jmenuitem jmenubar

我试图让我的JMenuBar显示在GUI中,但它只是在顶部显示为1像素线。

这是我的代码......

public LibraryView() {
    setBounds(100,100,640,480);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new BorderLayout());

    JMenuBar b1 = new JMenuBar();
    JMenu m1 = new JMenu("Test");
    JMenuItem i1 = new JMenuItem("Item1");

    this.setJMenuBar(b1);
}

有人可以帮我理解错误。

3 个答案:

答案 0 :(得分:5)

您需要将JMenuJMenuItem添加到JMenuBar。在GUI显示之前,您还需要在方法结束时pack()setVisible(true); ...

public LibraryView() {
    setBounds(100,100,640,480);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new BorderLayout());

    JMenuBar b1 = new JMenuBar();
    JMenu m1 = new JMenu("Test");
    JMenuItem i1 = new JMenuItem("Item1");

    m1.add(i1); // ADDED
    b1.add(m1); // ADDED

    this.setJMenuBar(b1);

    pack(); // ADDED
    setVisible(true); // MOVED
}

答案 1 :(得分:3)

您应该在 之后将setVisible(true) 添加到顶级窗口。另外,不要忘记使用布局管理器,让这些管理器和组件的preferredSize设置组件的大小,不要忘记调用pack()

答案 2 :(得分:0)

在调用set visible(true)之前调用repaint(),这绝不会失败。

 setJMenuBar(menuBar);
 menuBar.add(jMenuItem);
 repaint(); //then
 setVisible(true); //Assured NEVER FAILS