【发布时间】:2016-06-09 16:48:36
【问题描述】:
你们中有人知道为什么我的 JMenuBar menuBar 没有出现吗?
我正在使用JFrame 和JPanel。
我的类扩展了JPanel 并继承了paint 方法(已经使用super.paint(g))。
我想在我的JMenuBar 上显示一些JLabels 和JTextFields(我知道这不是它的目的)
这是我的代码:
public void createMenuBar(){
menuBar = new JMenuBar();
menuBar.setBounds(0,0,1463,29);
menuBar.setLayout(null);
this.add(menuBar);
ipLbl = new JLabel("IP-Adresse:");
ipLbl.setBounds(5,2,150,25);
ipLbl.setLabelFor(ip);
menuBar.add(ipLbl);
ip = new JTextField();
ip.setBounds(150,2,100,25);
menuBar.add(ip);
}
我在创建 JFrame 之后调用此方法,但在执行 setVisible(true) 之前。
看:
public IceHockey(){
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e){}
fenster = new JFrame("IceHockey");
fenster.setSize(1479, 941);
fenster.setLayout(null);
fenster.addKeyListener(this);
fenster.addMouseListener(this);
fenster.setResizable(false);
fenster.setLocationRelativeTo(null);
fenster.setContentPane(this);
this.addKeyListener(this);
this.addMouseListener(this);
createMenuBar();
fenster.setVisible(true);
fenster.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
【问题讨论】:
-
不要使用空布局!!!。这已在您之前的一篇帖子中提出:stackoverflow.com/questions/36751366/…。注意建议。我们给他们一个理由。阅读 How to Use Menus 上的 Swing 教程以获取工作示例。该代码还将向您展示如何更好地构建您的课程。
-
camickr 我知道,但是这个程序只适合我,甚至我在学校的老师也告诉我们,我们可以使用空布局。所以这取决于我在使用什么!此外,null 布局使用起来非常简单!
-
Besides, the null layout is sooo simple to use!- 不,不是。你完全不知道一个组件应该有多大才能正确显示。对随机数进行硬编码是浪费时间,而且只会在未来引起问题,尤其是在需要进行更改时。更改字体等简单的事情会导致问题。仅仅因为你可以做某事并不意味着你应该做。学会正确使用 Swing!您甚至还没有学习 Swing 基础知识(或者您不会问这个问题),所以您不知道什么容易或不容易。这仅来自经验。