简体   繁体   English

在Java中创建菜单

[英]Creating a menu in java

Is there a way to create a menu in Java GUI? 有没有办法在Java GUI中创建菜单? Like for example, I'm using Firefox right now. 例如,我现在正在使用Firefox。 On the top of the browser, there's a menu with the tabs "File," "Edit," "View," "History," "Bookmarks," "Tools," and "Help." 在浏览器的顶部,有一个菜单,带有选项卡“文件”,“编辑”,“视图”,“历史记录”,“书签”,“工具”和“帮助”。 So is there a way to make a similar menu tab in a Java GUI? 那么有没有办法在Java GUI中制作类似的菜单选项卡? I'm not quite sure exactly what the component is called, so if someone could point me in the right direction, I'd really appreciate it. 我不确定该组件到底是什么,所以如果有人可以指出正确的方向,我将非常感激。

Yes it is possible, with Swing it is called a JMenuBar . 是的,通过Swing可以将其称为JMenuBar And Another link here . 还有另一个链接在这里

Use JMenuBar, JMenu, and JMenuItem. 使用JMenuBar,JMenu和JMenuItem。 Here is an example: 这是一个例子:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;

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

public class SimpleMenu implements ActionListener, ItemListener  {

    public JMenuBar createMenuBar() {
        //create a menubar
        JMenuBar menuBar;
        JMenu filemenu, editmenu;
        JMenu editsubmenu;
        JMenuItem menuItem;

        //Create the menu bar.
        menuBar = new JMenuBar();

        //Build the file menu.
        filemenu = new JMenu("File");
        filemenu.setMnemonic(KeyEvent.VK_F);
        filemenu.getAccessibleContext().setAccessibleDescription("This is the File menu.");
        menuBar.add(filemenu);

        //menu items
        menuItem = new JMenuItem("New",KeyEvent.VK_N);
        menuItem.getAccessibleContext().setAccessibleDescription("");
        menuItem.addActionListener(this);
        filemenu.add(menuItem);
        menuItem = new JMenuItem("Open File...",KeyEvent.VK_O);
        menuItem.getAccessibleContext().setAccessibleDescription("");
        menuItem.addActionListener(this);
        filemenu.add(menuItem);
        menuItem = new JMenuItem("Close",KeyEvent.VK_C);
        menuItem.getAccessibleContext().setAccessibleDescription("");
        menuItem.addActionListener(this);
        filemenu.add(menuItem);     

        //Build the Edit menu.
        editmenu = new JMenu("Edit");
        editmenu.setMnemonic(KeyEvent.VK_E);
        editmenu.getAccessibleContext().setAccessibleDescription("This is the Edit menu.");
        menuBar.add(editmenu);

        //menu items
        menuItem = new JMenuItem("Undo Typing",KeyEvent.VK_U);
        menuItem.getAccessibleContext().setAccessibleDescription("");
        menuItem.addActionListener(this);
        editmenu.add(menuItem);
        menuItem = new JMenuItem("Redo",KeyEvent.VK_R);
        menuItem.getAccessibleContext().setAccessibleDescription("");
        menuItem.addActionListener(this);
        editmenu.add(menuItem);
        editsubmenu = new JMenu("Expand Selection To");
        editsubmenu.setMnemonic(KeyEvent.VK_X);
        editsubmenu.addActionListener(this);
        editmenu.add(editsubmenu);

        menuItem = new JMenuItem("Enclosing Element");
        menuItem.getAccessibleContext().setAccessibleDescription("");
        menuItem.addActionListener(this);
        editsubmenu.add(menuItem);

        menuItem = new JMenuItem("Next Element");
        menuItem.getAccessibleContext().setAccessibleDescription("");
        menuItem.addActionListener(this);
        editsubmenu.add(menuItem);

        menuItem = new JMenuItem("Previous Element");
        menuItem.getAccessibleContext().setAccessibleDescription("");
        menuItem.addActionListener(this);
        editsubmenu.add(menuItem);

        return menuBar;
    }


    private static void createAndShowGUI() {

        JFrame frame = new JFrame("A Simple Menu");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        SimpleMenu smenu = new SimpleMenu();
        frame.setJMenuBar(smenu.createMenuBar());

        /* show frame */
        frame.pack();
        frame.setSize(400,300);
        frame.setVisible(true);
    }

    public static void main(String[] args) {

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    @Override
    public void itemStateChanged(ItemEvent e) { }

    @Override
    public void actionPerformed(ActionEvent e) {

        JMenuItem jmi = (JMenuItem)e.getSource();
        System.out.println("menu item clicked: " + jmi.getText());
        if (jmi.getText().equalsIgnoreCase("close")) {
            System.exit(0);
        }

    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM