1
我是java swing类的新手,并且正在学习如何在JFrame中添加菜单栏和菜单。为什么在添加setJMenubar()方法后,Jmenubar在我的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();
}
}
这里是这段代码的输出。
请勿将“Ctrl_O”添加为菜单项文本的一部分。相反,您需要使用'JMenuItem'的'setAccelerator(...)'方法。阅读[如何使用菜单]的Swing教程部分(http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html)以获取更多信息和工作示例。本教程还将帮助您更好地构建您的课堂,以便您的组件在“事件调度线程(EDT)”上创建。为所有Swing基础知识保留教程链接。 – camickr
*“我是Java swing的新手”*那么开始做对吧:了解[Java命名约定](http://www.oracle.com/technetwork/java/codeconventions-135099.html)并且不会继承来自JFrame(http://stackoverflow.com/questions/15867148/why-do-we-need-to-extend-jframe-in-a-swing-application)。 –