java - JMenuBar 不显示
问题描述
我正在尝试创建一个菜单栏,但由于某种原因它没有出现。谷歌研究没有帮助。最后,我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);
}
解决方案
在 initComponent() 中,您使用:
setJMenuBar(bar);
哪个是对的。
但是然后在您的构造函数中,您尝试再次将“栏”添加到框架中:
initComponent();
add(bar); // delete this line
从框架的保留区域中删除菜单栏。并且因为您使用的是空布局,并且默认情况下“栏”的大小为 (0, 0),所以没有任何东西可以绘制。
一个组件只能有一个父组件,不要尝试添加该组件两次。
不要使用空布局。Swing 旨在与布局管理器一起使用。
推荐阅读
- javascript - 将 onclick 事件传递给没有全局函数的模板文字
- swift - 在真实设备 iOS Swift 上进行单元测试时尝试生成随机密钥对时出错
- karate - 使用 Gradle 的不同空手道报告
- java - 未转换为系统属性的环境变量
- java - 如何使用 Material Design 更改操作栏文本颜色?
- windows - 如何在 Windows CMD 中重命名文件(命令提示符)
- php - 如何以原始函数树枝的形式在我的 var 中取消转义字符串 html?
- java - RecyclerView 在活动中总是空白
- powershell - 如何将 powershell 中文件的 SHA256 哈希值与已知值进行比较?
- hyperlink - 如何正确显示从 Sphinx 文档生成器生成的 pdf 中的超链接