我是 java swing 类(class)的新手,正在学习如何在 JFrame 中添加菜单栏和菜单。
我写了一个简单的例子,但是 JFrame
显示为空,我不知道为什么,因为我已经包含了 setJMenuBar()
我的代码中的方法然后菜单栏也不可见。
这是我的代码
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class jmenuexample extends JFrame //implements ActionListener
{
JLabel title;
JMenuBar menubar;
JMenu menu, submenu;
JMenuItem menuItem;
jmenuexample()
{
setTitle("JMenu Example");
setSize(750, 450);
//setLayout(null);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menubar = new JMenuBar();
menu = new JMenu("File");
menuItem = new JMenuItem("New\tCtrl+N");
menu.add(menuItem);
menuItem = new JMenuItem("Open\tCtrl+O");
menu.add(menuItem);
menuItem = new JMenuItem("Save\tCtrl+S");
menu.add(menuItem);
//menu.addSeparator();
menuItem = new JMenuItem("Exit");
menu.add(menuItem);
menubar.add(menu);
/*panel = new JPanel();
panel.setLayout(new GridLayout());
panel.setBounds(250,10, 400, 300);*/
//add(menubar);
//add(panel);
this.setJMenuBar(menubar);
}
public static void main(String argv[])
{
new jmenuexample();
}
}
这是这段代码的输出。
最佳答案
因为你在设置之前使用了setVisible(true);
this.setJMenuBar(菜单栏);
所以改变顺序并最后setVisible(true);
。
你的代码应该是这样的:
....
menubar.add(menu);
/*panel = new JPanel();
panel.setLayout(new GridLayout());
panel.setBounds(250,10, 400, 300);*/
//add(menubar);
//add(panel);
this.setJMenuBar(menubar);
setVisible(true);
....
希望这可以帮助你。
关于java - 为什么即使添加 setJMenubar() 方法后,Jmenubar 在我的 Jframe 中也不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41188381/