我试图让我的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);
}
有人可以帮我理解错误。
答案 0 :(得分:5)
您需要将JMenu
和JMenuItem
添加到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