有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么即使在添加setJMenubar()方法后,Jmenubar在我的Jframe中也不可见?

我是java swing类的新手,正在学习如何在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();
    }
}

这是这段代码的输出

Screenshot of output


共 (1) 个答案

  1. # 1 楼答案

    因为您在设置之前使用了setVisible(true); this.setJMenuBar(menubar);

    所以改变顺序,最后{}

    你的代码应该是这样的:

    ....
    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);
    ....
    

    希望这能对你有所帮助