1

我试图让我的 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);
}

有人可以帮我理解什么是错的。

4

3 回答 3

5

您需要将JMenuand添加JMenuItemJMenuBar. 您还需要在方法结束时pack()setVisible(true);就在显示 GUI 之前...

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
}
于 2012-05-27T03:54:09.353 回答
3

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

于 2012-05-27T03:54:19.860 回答
0

在调用 set visible(true) 之前调用 repaint() 永远不会失败。

 setJMenuBar(menuBar);
 menuBar.add(jMenuItem);
 repaint(); //then
 setVisible(true); //Assured NEVER FAILS
于 2016-04-06T17:43:43.133 回答