JMenuBar 不显示
JMenuBar doesn't show
我正在尝试创建一个菜单栏,但由于某种原因它没有显示。 Google 研究没有帮助。我将 setVisible(true)
放在末尾,我将菜单栏添加到 window 并将菜单点添加到栏中。然而它仍然没有出现。
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);
这是正确的。
但是随后在您的构造函数中您尝试再次将“栏”添加到框架中:
initComponent();
add(bar); // delete this line
从框架的保留区域删除菜单栏。并且由于您使用的是空布局,并且默认情况下“栏”的大小为 (0, 0),所以没有什么可绘制的。
一个组件只能有一个父组件,不要尝试添加组件两次。
不要使用空布局。 Swing 旨在与布局管理器一起使用。
我正在尝试创建一个菜单栏,但由于某种原因它没有显示。 Google 研究没有帮助。我将 setVisible(true)
放在末尾,我将菜单栏添加到 window 并将菜单点添加到栏中。然而它仍然没有出现。
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);
这是正确的。
但是随后在您的构造函数中您尝试再次将“栏”添加到框架中:
initComponent();
add(bar); // delete this line
从框架的保留区域删除菜单栏。并且由于您使用的是空布局,并且默认情况下“栏”的大小为 (0, 0),所以没有什么可绘制的。
一个组件只能有一个父组件,不要尝试添加组件两次。
不要使用空布局。 Swing 旨在与布局管理器一起使用。