Добавление подменю

Поэтому я попытался обратиться за помощью к документации по Java, но очень быстро запутался. Я пытаюсь добавить подменю к пункту меню "Редактировать", которое будет иметь подменю "Копировать и вставить", и я точно знаю, как это сделать. У меня есть переменная подменю, я использую это? Пожалуйста, помогите, спасибо. Код ниже.

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

public class MyJFrame extends JFrame
{
JMenuBar menubar;
JMenu menu, submenu;
JMenuItem mi;

public MyJFrame(String title)
{
    super(title);
    menubar = new JMenuBar();
    setJMenuBar(menubar);
    buildMenu();
}

void buildMenu()
{
menu = new JMenu("File");

           mi = new JMenuItem("New");
           menu.add(mi);
           menubar.add(menu);

           mi = new JMenuItem("List Files");
           menu.add(mi);
           menubar.add(menu);
           menu.addSeparator();

           mi = new JMenuItem("Save As");
           menu.add(mi);
           menubar.add(menu);
           menu.addSeparator();

           mi = new JMenuItem("Close");
           menu.add(mi);
           menubar.add(menu);

    menu = new JMenu("Tools");

           mi = new JMenuItem("Sort");
           menu.add(mi);
           menubar.add(menu);

           mi = new JMenuItem("Search");
           menu.add(mi);
           menubar.add(menu);

           mi = new JMenuItem("Edit");
           menu.add(mi);
           menubar.add(menu);
           mi = new JMenuItem("Copy");
           menu.add(mi);
           menubar.add(menu);
           mi = new JMenuItem("Paste");
           menu.add(mi);
           menubar.add(menu);
}
}

3 ответа

Решение

Создайте Menu вместо MenuItem для редактирования и добавьте MenuItems Copy и Paste. Затем добавьте меню редактирования в Меню инструментов.

   menu = new JMenu("Tools");

       mi = new JMenuItem("Sort");
       menu.add(mi);
       mi = new JMenuItem("Search");
       menu.add(mi);
      JMenu med = new JMenu("Edit");
        mi = new JMenuItem("Copy");
       med.add(mi);
        mi = new JMenuItem("Paste");
       med.add(mi);
       menu.add(med);
     menubar.add(menu);

Примечание: я отредактировал последнюю часть вашего кода. Просто замените код из меню инструментов на это и попробуйте это. Если получит ошибку, скажите мне.

Вот простой пример того, как вы можете это сделать:

JMenuBar menuBar = new JMenuBar();

// Edit Menu
JMenu editMenu = new JMenu("Edit");    
menuBar.add(editMenu);

// Edit -> Copy
JMenuItem copyMenuItem = new JMenuItem("Copy");
editMenu.add(copyMenuItem);

// Edit -> Paste
JMenuItem pasteMenuItem = new JMenuItem("Paste");
editMenu.add(pasteMenuItem);

Упрощенная выдержка из https://docs.oracle.com/javase/tutorial/uiswing/components/menu.html

Изображение результата

menu.addSeparator();
submenu = new JMenu("A submenu"); 

menuItem = new JMenuItem("An item in the submenu");
submenu.add(menuItem);

menuItem = new JMenuItem("Another item");
submenu.add(menuItem);
menu.add(submenu); // you add the submenu to your existing menu
Другие вопросы по тегам