微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JMenuBar 不显示

如何解决JMenuBar 不显示

我正在尝试创建一个菜单栏,但由于某种原因它没有出现。谷歌研究没有帮助。我把 setVisible(true) 放在最后,我将菜单添加到窗口中,并将 Menupoints 添加到栏中。但是它仍然没有出现。

public MusicPlayerGUI(){
        setLayout(null);
        
        getContentPane().setBackground(Color.green);
        setTitle("MusicPlayer");
        setDefaultCloSEOperation(EXIT_ON_CLOSE);
        setSize(600,700);
        
        initComponent();
        add(bar);
        add(edit);
        add(show);
        add(createPlaylist);
        add(addSong);
        add(all);
        add(genre);
        add(rock);
        add(indie);
        add(playlists);
    
        setVisible(true);
    }
    
    public void initComponent() {
        //Menubar
        bar = new JMenuBar();
        setJMenuBar(bar);
        edit = new JMenu("Edit");
        bar.add(edit);
        show = new JMenu("Show");
        bar.add(show);
        createPlaylist = new JMenuItem("Create new Playlist");
        edit.add(createPlaylist);
        addSong = new JMenuItem("Add new Song");
        edit.add(addSong);
        all = new JMenuItem("All");
        show.add(all);
        genre = new JMenuItem("Genre");
        show.add(genre);
        rock = new JMenuItem("Rock");
        genre.add(rock);
        indie = new JMenuItem("Indie");
        genre.add(indie);
        playlists = new JMenuItem("Playlists");
        show.add(playlists);
        
        
    }
    

解决方法

在 initComponent() 中使用:

setJMenuBar(bar);

哪个是正确的。

但是在您的构造函数中,您尝试再次将“bar”添加到框架中:

    initComponent();
    add(bar); // delete this line

从框架的保留区域中删除菜单栏。并且因为您使用的是空布局,并且默认情况下“栏”的大小为 (0,0),所以没有什么可绘制的。

  1. 一个组件只能有一个父组件,不要尝试添加组件两次。

  2. 不要使用空布局。 Swing 旨在与布局管理器一起使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。