Java JMenuBar不显示
我试图让我的JMenuBar显示在GUI中,但是它只是在顶部显示为1像素线 这是我的密码Java JMenuBar不显示,java,swing,jmenu,jmenuitem,jmenubar,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(); JM
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);
}
有人能帮我弄清楚哪里出了问题。您需要将
JMenu
和JMenuItem
添加到JMenuBar
中。您还需要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
}
您需要将JMenu
和JMenuItem
添加到JMenuBar
中。您还需要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
}
将所有组件添加到顶层窗口后,应调用setVisible(true)
only。另外,不要忘记使用布局管理器,让这些管理器和组件的首选大小设置组件的大小,不要忘记调用pack()
在将所有组件添加到顶层窗口后,应该调用setVisible(true)
仅。另外,不要忘记使用布局管理器,让这些管理器和组件的首选大小设置组件的大小,并且不要忘记在调用set visible(true)之前调用pack()
调用repaint()。这决不会失败
setJMenuBar(menuBar);
menuBar.add(jMenuItem);
repaint(); //then
setVisible(true); //Assured NEVER FAILS
在调用set visible(true)之前调用repaint(),这永远不会失败
setJMenuBar(menuBar);
menuBar.add(jMenuItem);
repaint(); //then
setVisible(true); //Assured NEVER FAILS
非常感谢。忘了把物品添加到吧台上了,啊。。你能简要解释一下为什么需要打包吗?没有它,代码似乎可以正常工作。大多数Java GUI都是自动调整大小的,这意味着它们将根据窗口的大小和其中的组件而增长和收缩。调用pack()
将计算窗口的首选大小,以便所有组件也可以按其按下的大小显示。这对你来说可能不是完全必要的,因为你已经setBounds()
,但是不管怎样调用pack()
都是一个好习惯。谢谢!实际上,在调用pack()
后,框架会忽略setBounds()
并调整大小,以便所有元素都能放入其中。谢谢!忘了把物品添加到吧台上了,啊。。你能简要解释一下为什么需要打包吗?没有它,代码似乎可以正常工作。大多数Java GUI都是自动调整大小的,这意味着它们将根据窗口的大小和其中的组件而增长和收缩。调用pack()
将计算窗口的首选大小,以便所有组件也可以按其按下的大小显示。这对你来说可能不是完全必要的,因为你已经setBounds()
,但是不管怎样调用pack()
都是一个好习惯。谢谢!实际上,在调用pack()
后,框架会忽略setBounds()
并调整大小,以便所有元素都能放入其中。repain()解决了这个问题,但只有在调用setVisible()后才有效。repain()解决了这个问题,但只有在调用setVisible()时才有效在它之后,不是相反的方向。