制作个性化菜单swing中Frame ,JMenu,JMenuItem 的使用

在菜单中设置快捷键和加速器,使用分割线和图标,使用单选按钮和复选框菜单项,启用和禁用菜单项

下面是代码演示和测试结果:

package com.demo;
import static java.awt.event.InputEvent.*;
import static java.awt.event.KeyEvent.*;

import java.awt.event.*;
import java.net.*;

import javax.swing.*;

public class lianxi extends JFrame {
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    final ButtonGroup buttonGroup = new ButtonGroup();
    
    public static void main(String args[]) {
        lianxi frame = new lianxi();
        frame.setVisible(true);
    }
    
    public lianxi() {
        super();
        setBounds(100, 100, 500, 375);
        setTitle("订制个性化菜单");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        final JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        final JMenu fileMenu = new JMenu("文件(F)");// 创建“文件”菜单
        fileMenu.setMnemonic('F');// 设置快捷键
        menuBar.add(fileMenu);// 添加到菜单栏
        final JMenuItem newItem = new JMenuItem("新建(N)");// 创建菜单项
        newItem.setMnemonic('N');// 设置快捷键
        // 设置加速器为“Ctrl+N”
        newItem.setAccelerator(KeyStroke.getKeyStroke(VK_N, CTRL_MASK));
        newItem.addActionListener(new ItemListener());// 添加动作监听器
        fileMenu.add(newItem);// 添加到“文件”菜单
        final JMenu openMenu = new JMenu("打开(O)");// 创建“打开”子菜单
        openMenu.setMnemonic('O');// 设置快捷键
        fileMenu.add(openMenu);// 添加到“文件”菜单
        // 创建子菜单项
        final JMenuItem openNewItem = new JMenuItem("未打开过的(N)");
        openNewItem.setMnemonic('N');// 设置快捷键
        // 设置加速器为“Ctrl+Alt+N”
        openNewItem.setAccelerator(KeyStroke.getKeyStroke(VK_N, CTRL_MASK
                | ALT_MASK));
        openNewItem.addActionListener(new ItemListener());// 添加动作监听器
        openMenu.add(openNewItem);// 添加到“打开”子菜单
        // 创建子菜单项
        final JMenuItem openClosedItem = new JMenuItem("刚打开过的(C)");
        openClosedItem.setMnemonic('C');// 设置快捷键
        // 设置加速器
        openClosedItem.setAccelerator(KeyStroke.getKeyStroke(VK_C,
                CTRL_MASK | ALT_MASK));
        openClosedItem.setEnabled(false);// 禁用菜单项
        // 添加动作监听器
        openClosedItem.addActionListener(new ItemListener());
        openMenu.add(openClosedItem);// 添加到“打开”子菜单
        fileMenu.addSeparator();// 添加分隔线
        
        final JMenuItem saveItem = new JMenuItem();
        saveItem.setText("保存(S)");
        saveItem.setMnemonic('S');
        saveItem.setAccelerator(KeyStroke.getKeyStroke(VK_S, CTRL_MASK));
        saveItem.addActionListener(new ItemListener());
        fileMenu.add(saveItem);
        
        fileMenu.addSeparator();
        
        final JMenuItem exitItem = new JMenuItem();
        exitItem.setText("退出(E)");
        exitItem.setMnemonic('E');
        exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,
                InputEvent.CTRL_MASK));
        exitItem.addActionListener(new ItemListener());
        fileMenu.add(exitItem);
        
        final JMenu editMenu = new JMenu();
        editMenu.setText("编辑(E)");
        editMenu.setMnemonic('E');
        menuBar.add(editMenu);
        
        URL resource = this.getClass().getResource("/img.JPG");
        ImageIcon icon = new ImageIcon(resource);
        
        final JMenuItem cutItem = new JMenuItem();
        cutItem.setIcon(icon);
        cutItem.setText("剪切(T)");
        cutItem.setMnemonic('T');
        cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,
                InputEvent.CTRL_MASK));
        cutItem.addActionListener(new ItemListener());
        editMenu.add(cutItem);
        
        final JMenuItem copyItem = new JMenuItem();
        copyItem.setIcon(icon);
        copyItem.setText("复制(C)");
        copyItem.setMnemonic('C');
        copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
                InputEvent.CTRL_MASK));
        copyItem.addActionListener(new ItemListener());
        editMenu.add(copyItem);
        
        final JMenuItem pastItem = new JMenuItem();
        pastItem.setIcon(icon);
        pastItem.setText("粘贴(P)");
        pastItem.setMnemonic('P');
        pastItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
                InputEvent.CTRL_MASK));
        pastItem.addActionListener(new ItemListener());
        editMenu.add(pastItem);
        
        editMenu.addSeparator();
        editMenu.insertSeparator(2);
        
        final JMenu fontMenu = new JMenu("字体(F)");// 创建“字体”子菜单
        fontMenu.setIcon(icon);// 设置菜单图标
        fontMenu.setMnemonic('F');// 设置快捷键
        editMenu.add(fontMenu);// 添加到“编辑”菜单
        final JCheckBoxMenuItem bCheckBoxItem = new JCheckBoxMenuItem(
                "加粗(B)");// 创建复选框菜单项
        bCheckBoxItem.setMnemonic('B');// 设置快捷键
        bCheckBoxItem.setAccelerator(KeyStroke.getKeyStroke(VK_B,
                CTRL_MASK | ALT_MASK)); // 设置加速器为“Ctrl+Alt+B”
        bCheckBoxItem.addActionListener(new ItemListener()); // 添加动作监听器
        fontMenu.add(bCheckBoxItem);// 添加到“字体”子菜单
        final JCheckBoxMenuItem iCheckBoxItem = new JCheckBoxMenuItem(
                "斜体(I)");// 创建复选框菜单项
        iCheckBoxItem.setMnemonic('I');// 设置快捷键
        iCheckBoxItem.setAccelerator(KeyStroke.getKeyStroke(VK_I,
                CTRL_MASK | ALT_MASK)); // 设置加速器为“Ctrl+Alt+I”
        iCheckBoxItem.addActionListener(new ItemListener()); // 添加动作监听器
        fontMenu.add(iCheckBoxItem);// 添加到“字体”子菜单
        
        editMenu.addSeparator();
        
        final JMenu attributeMenu = new JMenu("属性(A)");// 创建“属性”子菜单
        attributeMenu.setIcon(icon);// 设置菜单图标
        attributeMenu.setMnemonic('A');// 设置快捷键
        editMenu.add(attributeMenu);// 添加到“编辑”菜单
        final JRadioButtonMenuItem rRadioButtonItem = new JRadioButtonMenuItem(
                "只读(R)");// 创建单选按钮菜单项
        rRadioButtonItem.setMnemonic('R');// 设置快捷键
        rRadioButtonItem.setAccelerator(KeyStroke.getKeyStroke(VK_R,
                CTRL_MASK | ALT_MASK));// 设置加速器为“Ctrl+Alt+R”
        buttonGroup.add(rRadioButtonItem);// 添加到按钮组
        rRadioButtonItem.setSelected(true);// 设置为被选中
        rRadioButtonItem.addActionListener(new ItemListener());// 添加动作监听器
        attributeMenu.add(rRadioButtonItem);// 添加到“属性”子菜单
        final JRadioButtonMenuItem eRadioButtonItem = new JRadioButtonMenuItem(
                "编辑(E)");// 创建单选按钮菜单项
        eRadioButtonItem.setMnemonic('E');// 设置快捷键
        eRadioButtonItem.setAccelerator(KeyStroke.getKeyStroke(VK_E,
                CTRL_MASK | ALT_MASK));// 设置加速器为“Ctrl+Alt+E”
        buttonGroup.add(eRadioButtonItem);// 添加到按钮组
        eRadioButtonItem.addActionListener(new ItemListener());// 添加动作监听器
        attributeMenu.add(eRadioButtonItem);// 添加到“属性”子菜单
        
        final JMenu helpMenu = new JMenu("帮助(H)", false);
        helpMenu.setText("帮助(H)");
        helpMenu.setMnemonic('H');
        menuBar.add(helpMenu);
        
        final JMenuItem aboutItem = new JMenuItem();
        aboutItem.setText("关于(A)");
        aboutItem.setMnemonic('A');
        aboutItem.addActionListener(new ItemListener());
        helpMenu.add(aboutItem);
        //
    }
    
    private class ItemListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            JMenuItem menuItem = (JMenuItem) e.getSource();
            System.out.println("您单击的是菜单项:" + menuItem.getText());
        }
    }
    
}
测试结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值