//图形用户界面 package tuxingyonhujiemian; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; public class Txyhjm { public static void main(String[] args) { // TODO Auto-generated method stub new MyFrame("aa"); } } class MyFrame extends JFrame{ public MyFrame() { setTitle("no title"); init(); } public MyFrame(String s) { setTitle(s); init(); } public void init() { MyMenuBar menubar = new MyMenuBar(); MyPanel panel = new MyPanel(); //界面布局 setLayout(new FlowLayout()); setJMenuBar(menubar); add(menubar); menubar.init(); add(panel); panel.init(); //是否可视 setVisible(true); //设置大小 setSize(400, 300); //设置点×号关闭即关闭程序 setDefaultCloseOperation(EXIT_ON_CLOSE); } } class MyMenuBar extends JMenuBar{ JMenuBar menubar = new JMenuBar(); JMenu menu1 = new JMenu("文件"); JMenu menu2 = new JMenu("文件"); JMenu menu3 = new JMenu("文件"); JMenu menu4 = new JMenu("文件"); JMenuItem menuitem1 = new JMenuItem("word"); JMenuItem menuitem2 = new JMenuItem("word"); JMenuItem menuitem3 = new JMenuItem("word"); public void init() { // setLayout(new FlowLayout()); // setVisible(true); menu1.add(menuitem1); menu1.add(menuitem2); menu1.add(menuitem3); menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); menubar.add(menu4); } } class MyPanel extends JPanel{ public void init() { add(new JLabel("姓名:")); add(new JTextField(10)); add(new JButton("已输入")); } }为什么没有显示菜单栏
时间: 2024-01-14 14:05:13 浏览: 29
您的代码存在一些问题,其中`MyMenuBar`类中的`init()`方法中没有将`JMenuBar`加入到`MyMenuBar`中,而是在`MyFrame`中直接将`JMenuBar`加入到了`JFrame`中。此外,`MyMenuBar`类中添加的`JMenuItem`也没有被使用,可能导致菜单栏无法显示。建议您修改代码如下:
```
package tuxingyonhujiemian;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Txyhjm {
public static void main(String[] args) {
new MyFrame("aa");
}
}
class MyFrame extends JFrame {
public MyFrame() {
setTitle("no title");
init();
}
public MyFrame(String s) {
setTitle(s);
init();
}
public void init() {
MyMenuBar menubar = new MyMenuBar();
MyPanel panel = new MyPanel();
// 界面布局
setLayout(new FlowLayout());
setJMenuBar(menubar);
add(panel);
panel.init();
// 是否可视
setVisible(true);
// 设置大小
setSize(400, 300);
// 设置点×号关闭即关闭程序
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class MyMenuBar extends JMenuBar {
JMenu menu1 = new JMenu("文件");
JMenu menu2 = new JMenu("编辑");
JMenu menu3 = new JMenu("关于");
JMenuItem menuitem1 = new JMenuItem("新建");
JMenuItem menuitem2 = new JMenuItem("打开");
JMenuItem menuitem3 = new JMenuItem("保存");
JMenuItem menuitem4 = new JMenuItem("剪切");
JMenuItem menuitem5 = new JMenuItem("复制");
JMenuItem menuitem6 = new JMenuItem("粘贴");
JMenuItem menuitem7 = new JMenuItem("关于我们");
public void init() {
menu1.add(menuitem1);
menu1.add(menuitem2);
menu1.add(menuitem3);
menu2.add(menuitem4);
menu2.add(menuitem5);
menu2.add(menuitem6);
menu3.add(menuitem7);
add(menu1);
add(menu2);
add(menu3);
}
}
class MyPanel extends JPanel {
public void init() {
add(new JLabel("姓名:"));
add(new JTextField(10));
add(new JButton("已输入"));
}
}
```
运行后可以看到已经成功显示了菜单栏。