【问题标题】:JMenuBar isn't showing up [duplicate]JMenuBar 没有出现[重复]
【发布时间】:2016-06-09 16:48:36
【问题描述】:

你们中有人知道为什么我的 JMenuBar menuBar 没有出现吗? 我正在使用JFrameJPanel

我的类扩展了JPanel 并继承了paint 方法(已经使用super.paint(g))。

我想在我的JMenuBar 上显示一些JLabelsJTextFields(我知道这不是它的目的)

这是我的代码:

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 基础知识(或者您不会问这个问题),所以您不知道什么容易或不容易。这仅来自经验。

标签: java swing jmenubar


【解决方案1】:

您可以使用fenster.setJMenuBar(menuBar);将菜单栏添加到框架中

如果您想将菜单栏添加到 JPanel,这篇文章有一种方法可以使用:

add JMenuBar to a JPanel?

【讨论】:

    【解决方案2】:

    在创建 MenuBar 之后,我认为您仍然需要将它添加到您的 JFrame。更改 createMenuBar() 以返回 JMenuBar 而不是 void,然后您可以编写以下内容:

    fenster.setJMenuBar(createMenuBar());
    

    我不清楚 createMenuBar() 代码中的 this 是什么,但我猜它不是 fenster然而是允许添加的东西。

    【讨论】:

    • "this" 是扩展的 JPanel^^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多