java核心技术卷 之菜单

         位于窗门顶部的菜单栏(menu bar)包括了下拉菜单的名字。点击一个名字就可以打开包含菜单项(menu items)和子菜单(submenus)的菜电。当用户点击菜单项时,所有的菜单 部会被关闭并且将“条消息发送给程序显示一个带子菜单的典型菜单。

程序代码:

import com.sun.deploy.association.*;

import javax.swing.*;
import javax.swing.Action;
import javax.swing.text.TextAction;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/**
 * Created by IBM on 2017/9/22.
 */
public class MenuFrame extends JFrame {
    private static final int DEFAULT_WIDTH=300;
    private static final int DEFAULT_HEIGHT=200;
    private Action saveAction;
    private Action saveAsAction;
    private JCheckBoxMenuItem readonLyItem;
    private JPopupMenu popup;

    public static void main(String[]args){
        MenuFrame buttonFrame=new MenuFrame();
        buttonFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        buttonFrame.setVisible(true);
    }

    class TestAction extends AbstractAction{
        public TestAction(String name){
            super(name);
        }
        public void actionPerformed(ActionEvent event){
            System.out.println(getValue(Action.NAME)+"selected");
        }
    }

    public MenuFrame(){
        setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);

        JMenu fileMenu=new JMenu("File");
        fileMenu.add(new TestAction("New"));

        JMenuItem openItem=fileMenu.add(new TestAction("Open"));
        openItem.setAccelerator(KeyStroke.getKeyStroke("ctrl 0"));//设置快捷键

        fileMenu.addSeparator();
        saveAction=new TestAction("Save");
        JMenuItem saveItem=fileMenu.add(saveAction);
        saveItem.setAccelerator(KeyStroke.getKeyStroke("ctrl 1"));

        saveAsAction=new TestAction("Save");
        JMenuItem saveAsItem=fileMenu.add(saveAsAction);
        saveAsItem.setAccelerator(KeyStroke.getKeyStroke("ctrl 2"));
        fileMenu.addSeparator();

        fileMenu.add(new AbstractAction("Exit") {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        readonLyItem=new JCheckBoxMenuItem("Read-only");
        readonLyItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                boolean saveOk=!readonLyItem.isSelected();
                saveAction.setEnabled(saveOk);
                saveAsAction.setEnabled(saveOk);
            }
        });
        ButtonGroup group=new ButtonGroup();
        JRadioButtonMenuItem insertItem=new JRadioButtonMenuItem("Insert");//单选按钮组
        insertItem.setSelected(true);
        JRadioButtonMenuItem overTypeItem=new JRadioButtonMenuItem("Overtype");//单选按钮组

        group.add(insertItem);
        group.add(overTypeItem);

        Action cutAction=new TestAction("Cut");
        cutAction.putValue(Action.SMALL_ICON,new ImageIcon("layers.png"));
        Action copyAction=new TestAction("Copy");
        copyAction.putValue(Action.SMALL_ICON,new ImageIcon("layers.png"));
        Action pasteAction=new TestAction("Paste");
        pasteAction.putValue(Action.SMALL_ICON,new ImageIcon("layers.png"));
        JMenu editMenu=new JMenu("Edit");
        editMenu.add(cutAction);
        editMenu.add(copyAction);
        editMenu.add(pasteAction);

        //
        JMenu optionMenu=new JMenu("Options");

        optionMenu.add(readonLyItem);
        optionMenu.addSeparator();
        optionMenu.add(insertItem);
        optionMenu.add(overTypeItem);

        editMenu.addSeparator();
        editMenu.add(optionMenu);

        //
        JMenu helpMenu=new JMenu("help");
        helpMenu.setMnemonic('H');

        JMenuItem indexItem=new JMenuItem("Index");
        indexItem.setMnemonic('I');
        helpMenu.add(indexItem);

        //
        Action aboutAction=new TestAction("About");
//        aboutAction.putValue(Action.MNEMONIC_KEY,new Integer("A"));
        helpMenu.add(aboutAction);

        JMenuBar menuBar=new JMenuBar();
        setJMenuBar(menuBar);

        menuBar.add(fileMenu);
        menuBar.add(editMenu);
        menuBar.add(helpMenu);

        //
        popup=new JPopupMenu();
        popup.add(cutAction);
        popup.add(copyAction);
        popup.add(pasteAction);
        popup.add(optionMenu);

        JPanel panel=new JPanel();
        panel.setComponentPopupMenu(popup);
        add(panel);

        //
        panel.addMouseMotionListener(new MouseAdapter() {});
    }
}

运行结果:




猜你喜欢

转载自blog.csdn.net/u014572215/article/details/78083572