【问题标题】:One JMenuBar and multiple JPanels一个 JMenuBar 和多个 JPanel
【发布时间】:2017-07-28 10:37:26
【问题描述】:

我的应用程序 GUI 有问题。我想创建一个全局 JMenuBar 并将其共享给其他 JPanel,但是如果我想分配给多个 JPanel 我有错误:

#

"menuBar 组件被多次添加到父组件中。

•panelAll.add(menuBar);

•panelTask​​.add(menuBar);"

#

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();

    JPanel panelAll = new JPanel();
    frame.getContentPane().add(panelAll, "name_218556506364138");
    panelAll.setLayout(null);

    JMenuBar menuBar = new JMenuBar();
    menuBar.setBounds(0, 0, 795, 21);
    panelAll.add(menuBar);

    JPanel panelTask = new JPanel();
    frame.getContentPane().add(panelTask, "name_218567310779840");
    panelTask.setLayout(null);
    panelTask.add(menuBar);

    JPanel panelMyTask = new JPanel();
    frame.getContentPane().add(panelMyTask, "name_218578712986622");
    panelMyTask.add(menuBar);

    JPanel panelMySoftware = new JPanel();
    frame.getContentPane().add(panelMySoftware, "name_218590026900741");
    panelMySoftware.add(menuBar);

    JPanel panelMyDevices = new JPanel();
    frame.getContentPane().add(panelMyDevices, "name_218598029981563");
    panelMyDevices.add(menuBar);
}
}

Image

【问题讨论】:

  • 通常你会用setJMenuBar(JMenuBar)将菜单栏添加到你的JFrame
  • 请从您的示例中删除不必要的代码
  • @Berger 嗨,谢谢 :) 它正在工作,我认为它会更好!

标签: java swing jmenubar


【解决方案1】:

我认为将 JMenuBar 添加到 JPanel 中不是一个好主意,但如果你坚持...

一个 JMenuBar 只能添加到一个容器中,因此您需要创建更多的 JMenuBar 实例。如果您使用command pattern,这应该可以正常工作。

//first instance
JMenuBar taskMenuBar = new MyJMenuBarImplementation();
JPanel panelMyTask = new JPanel();
frame.getContentPane().add(panelMySoftware, "name_xxx");
panelMyTask.add(taskMenuBar);

//second instance
JMenuBar softwareMenuBar = new MyJMenuBarImplementation();
JPanel panelMySoftware = new JPanel();
frame.getContentPane().add(panelMySoftware, "name_yyy");
panelMySoftware.add(softwareMenuBar);

//and so on...

【讨论】:

  • 嘿,谢谢 :) 我会试试这个方法。
猜你喜欢
  • 1970-01-01
  • 2011-05-17
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
相关资源
最近更新 更多