将 JMenuBar 添加到 JPanel 中?

发布于 2024-10-04 11:37:08 字数 63 浏览 5 评论 0原文

我有一个 JMenuBar 和一个 JPanel。我想将 JMenuBar 添加到 JPanel。我该怎么做呢?

I've got a JMenuBar and a JPanel. I'd like to add the JMenuBar to the JPanel. How would I do so?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

≈。彩虹 2024-10-11 11:37:08

您可以为您的 JPanel 使用 BorderLayout 和将 JMenuBar 放入面板的北部区域,其中

JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(menubar, BorderLayout.NORTH);

JMenuBar 是一个 JComponent,可以像任何其他 JComponent 一样添加到 Container。

You can use a BorderLayout for your JPanel and put the JMenuBar into the NORTH area of the panel with

JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(menubar, BorderLayout.NORTH);

JMenuBar is a JComponent and can be added to a Container like any other JComponent.

裸钻 2024-10-11 11:37:08

使用 setJMenuBar 方法将 JMenuBar 设置为 JFrame。

请参阅以下教程了解如何使用它们。

http://download.oracle.com/javase/tutorial/uiswing/components /menu.html

JMenuBars are set to the JFrame using the setJMenuBar method.

See the following tutorial on how to use them.

http://download.oracle.com/javase/tutorial/uiswing/components/menu.html

眼眸印温柔 2024-10-11 11:37:08

我有另一个解决方案,尽管您必须在 NetBeans 的“其他组件”中添加 JMenuBar(足够好)。创建一个 JPanel,然后在其中添加另一个 JPanel(称为子级),以填充整个外部 JPanel。将控件放置在子面板中。然后添加 JMenuBar,但 NetBeans 会将其放置在“其他组件”中。编辑您的源代码,并在 ctor 中调用“initComponents”后调用此函数:

public static void setJPanelMenuBar(JPanel parent, JPanel child, JMenuBar menuBar) {
    parent.removeAll();
    parent.setLayout(new BorderLayout());
    JRootPane root = new JRootPane();
    parent.add(root, BorderLayout.CENTER);
    root.setJMenuBar(menuBar);
    root.getContentPane().add(child);
    parent.putClientProperty("root", root);  //if you need later
  }

例如,您的 ctor 可能如下所示:

  public MyPanel() {
    initComponents();
    setJPanelMenuBar(this, child, myMenuBar);
  }

Works for me。通过查看 JInternalFrame 源代码得到了这个想法。它所做的就是将子 JPanel 替换为 JRootPane(),然后将子 JPanel 放入根窗格的内容窗格中。

I have another solution, although you have to add the JMenuBar in the "Other Components" in NetBeans (good enough). Create a JPanel and then add another JPanel inside (call it child) that fills the entire outter JPanel. Place your controls in the child panel. Then add the JMenuBar but NetBeans will place it in the "Other Components". Edit your source and in the ctor after it calls "initComponents" place a call to this function:

public static void setJPanelMenuBar(JPanel parent, JPanel child, JMenuBar menuBar) {
    parent.removeAll();
    parent.setLayout(new BorderLayout());
    JRootPane root = new JRootPane();
    parent.add(root, BorderLayout.CENTER);
    root.setJMenuBar(menuBar);
    root.getContentPane().add(child);
    parent.putClientProperty("root", root);  //if you need later
  }

For example, your ctor might look like this:

  public MyPanel() {
    initComponents();
    setJPanelMenuBar(this, child, myMenuBar);
  }

Works for me. Got the idea by looking at JInternalFrame source code. All it does is replace the child JPanel with a JRootPane() and then put the child into the root pane's content pane.

谁许谁一生繁华 2024-10-11 11:37:08

我也尝试过,但带有 JmenuJmenuBarJMenuItem 未添加到 JPanel 中。
但是,如果将 JFrame 的布局声明为 null,然后在 JMenuBar 上使用 setBounds(x, y, width, height) ,您就会有这种感觉实例然后将菜单栏添加到 JFrame 中。

I tried too but JMenuItem with Jmenu and JmenuBar was not added to JPanel.
But you can get that feel if you declare JFrame's layout as null then use setBounds(x, y, width, height) on JMenuBar instance then add the menu bar to JFrame.

长途伴 2024-10-11 11:37:08

尝试在面板上放置一个 jDesktopPane,然后向其中添加一个菜单栏。我在下面的示例中使用了选项卡式窗格,但它对于面板应该具有相同的作用。

    JDesktopPane desktopPane = new JDesktopPane();
    tabbedPane.addTab("New tab", null, desktopPane, null);

    JMenuBar menuBar_1 = new JMenuBar();
    menuBar_1.setBounds(0, 0, 441, 21);
    desktopPane.add(menuBar_1);

Try putting a jDesktopPane on your panel and then add a menubar to that. I'm using a tabbed pane in my example below, but it should work the same for a panel.

    JDesktopPane desktopPane = new JDesktopPane();
    tabbedPane.addTab("New tab", null, desktopPane, null);

    JMenuBar menuBar_1 = new JMenuBar();
    menuBar_1.setBounds(0, 0, 441, 21);
    desktopPane.add(menuBar_1);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文