java 添加子菜单

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30000464/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 16:16:30  来源:igfitidea点击:

Adding a submenu

javaswingjmenujmenuitem

提问by Daniel D

So I tried to look at the Java docs for help for this but got confused pretty quickly. I am trying to add a submenu to the menu item 'Edit' which will have submenus Copy and Paste, and I'm note sure how to do it. I have a submenu variable created, do I use that? Please help, thank you. Code is below.

所以我试图查看 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);
}
}

回答by Sharad Ag.

create a Menu instead of a MenuItem for Edit, and add MenuItems Copy and Paste. Then Add edit menu to Tools Menu .

为 Edit 创建一个 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);

Note: I have edited the last part of your code. Just replace the code from tools menu to this and try this. If it gets error, tell me.

注意:我已经编辑了您代码的最后一部分。只需将工具菜单中的代码替换为这个,然后试试这个。如果出现错误,请告诉我。

回答by Sharad Ag.

Here is a simple example of how you can do it:

这是一个简单的例子,说明如何做到这一点:

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);

回答by Arthur Spooner

Simplified excerpt from https://docs.oracle.com/javase/tutorial/uiswing/components/menu.html

摘自https://docs.oracle.com/javase/tutorial/uiswing/components/menu.html

Result image

结果图

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