jmenubar不显示

mnowg1ta  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(392)

我试图创建一个菜单栏,但由于某些原因,它没有显示出来。谷歌的研究没有帮助。我把 setVisible(true) 最后,我将菜单栏添加到窗口中,并将菜单点添加到栏中。然而,它仍然没有出现。

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

    }
jxct1oxe

jxct1oxe1#

在initcomponent()中,您使用:

setJMenuBar(bar);

这是正确的。
但在构造器中,您尝试再次将“条”添加到帧中:

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

这将从帧的reseverd区域中删除菜单栏。由于您使用的是空布局,并且默认情况下“栏”的大小为(0,0),因此没有要绘制的内容。
组件只能有一个父级,不要尝试添加组件两次。
不要使用空布局。swing设计用于布局管理器。

相关问题