добавить JMenuBar в JPanel? - PullRequest
       50

добавить JMenuBar в JPanel?

13 голосов
/ 29 ноября 2010

У меня есть JMenuBar и JPanel. Я хотел бы добавить JMenuBar в JPanel. Как бы я это сделал?

Ответы [ 5 ]

15 голосов
/ 29 ноября 2010

Вы можете использовать BorderLayout для вашей JPanel и поместить JMenuBar в СЕВЕРНУЮ область панели с помощью

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

JMenuBar является JComponent и может быть добавлен в контейнер как любой другой JComponent.

4 голосов
/ 29 ноября 2010

JMenuBars установлены в JFrame с использованием метода setJMenuBar.

См. Следующий учебник о том, как их использовать.

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

0 голосов
/ 24 марта 2015

У меня есть другое решение, хотя вы должны добавить JMenuBar в «Другие компоненты» в NetBeans (достаточно хорошо).Создайте 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 может выглядеть так:мне.Получил идею, посмотрев на исходный код JInternalFrame.Все, что он делает, это заменяет дочерний JPanel на JRootPane (), а затем помещает дочерний элемент в область содержимого корневой панели.

0 голосов
/ 05 апреля 2013

Попробуйте установить на панель 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);
0 голосов
/ 10 марта 2011

Я тоже пытался, но JMenuItem с Jmenu и JmenuBar не было добавлено к JPanel. Но вы можете почувствовать это, если объявите макет JFrame как нулевой, а затем используйте setBounds(x, y, width, height) в экземпляре JMenuBar и добавьте строку меню в JFrame.

...