栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第九章 Swing 用户界面组件(10) 快捷键与启用、禁用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第九章 Swing 用户界面组件(10) 快捷键与启用、禁用

9.5.5 快捷键和加速器

JMenuItem aboutItem = new JMenuItem("about",'A');

按下字母'A'即可选择快捷键

action对象处理:

Action.putValue(Action.MNEMONIC_KEY, new Integer('A'));

菜单设置快捷键字母:

helpMenu.setMnemonic('H');

组合键设置:

openItem.setAccelerator(KeyStroke.getKeyStroke("ctrl O"));

9.5.6 启用与禁用菜单项

启用禁用:

menuItem.setEnabled(false);

选中不能重选,MenuListener监听中修改对应菜单启用禁用

public class Main {
    public static  void main(String[] args) {
        Main solution = new Main();

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                Menuframe menuframe = new Menuframe();
                menuframe.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
                menuframe.setVisible(true);
            }
        });
    }

}

class Menuframe extends Jframe {
    public static final int W = 300;
    public static final int H = 200;
    private Action saveAction;
    private Action saveAsAction;
    private JCheckBoxMenuItem readonlyItem;
    private JPopupMenu popup;
    public Menuframe(){
        setTitle("MenuTest");
        setSize(W,H);
        JMenu fileMenu = new JMenu("file");
        fileMenu.add(new TestAction("New"));

        JMenuItem openItem = fileMenu.add(new TestAction("Open"));
        openItem.setAccelerator(KeyStroke.getKeyStroke("ctrl O"));

        fileMenu.addSeparator();;

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

        saveAsAction = new TestAction("Save As");
        fileMenu.add(saveAsAction);
        fileMenu.addSeparator();

        fileMenu.add(new AbstractAction() {
            @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("src/resource/p1.png"));
        Action copyAction = new TestAction("Copy");
        copyAction.putValue(Action.SMALL_ICON, new ImageIcon("src/resource/p2.png"));
        Action pasteAction = new TestAction("Paste");
        pasteAction.putValue(Action.SMALL_ICON, new ImageIcon("src/resource/p3.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);

        JPanel panel = new JPanel();
        panel.setComponentPopupMenu(popup);
        add(panel);
        panel.addMouseListener(new MouseAdapter() {
        });


    }

}

class TestAction extends AbstractAction{
    public TestAction(String name){
        super(name);
    }

    public void actionPerformed(ActionEvent event){
        System.out.println(getValue(Action.NAME)+" selected.");
    }
}

各种菜单快捷键点击显示到控制台效果

 相关内容:选择 《Java核心技术 卷1》查找相关笔记

 喜欢的话,点个赞吧~!平时做题,以及笔记内容将更新到公众号。

关注公众号,互相学习:钰娘娘知识汇总

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749360.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号