`

设置菜单项JMenuItem()的快捷键

 
阅读更多
package PreD.utils;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.Icon;
import javax.swing.InputMap;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.WindowConstants;

/**
 * 
 * @Description 
 * @Author zhangzuoqiang
 * @Date 2012-1-6
 */
public class KeyStrokeDemo extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel buttonPnl = null;
	private JButton blueBtn, yellowBtn, redBtn;

	public KeyStrokeDemo() {
		super("快捷键测试程序");
		this.setSize(300, 200);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

		buttonPnl = new JPanel();

		blueBtn = new JButton();
		yellowBtn = new JButton();
		redBtn = new JButton();

		Action blueAction = new ColorAction("bule", null, Color.BLUE, blueBtn);
		Action yellowAction = new ColorAction("yellow", null, Color.YELLOW,
				yellowBtn);
		Action redAction = new ColorAction("red", null, Color.RED, redBtn);

		blueBtn.setAction(blueAction);
		yellowBtn.setAction(yellowAction);
		redBtn.setAction(redAction);

		buttonPnl.add(blueBtn);
		buttonPnl.add(yellowBtn);
		buttonPnl.add(redBtn);
		this.getContentPane().add(buttonPnl, BorderLayout.CENTER);

		KeyStroke blueKS = KeyStroke.getKeyStroke("ctrl B");// 定义一个ctrl + b的快捷键
		KeyStroke yellowKS = KeyStroke.getKeyStroke("ctrl Y");// 定义一个ctrl +
																// y的快捷键
		// KeyStroke redKS = KeyStroke.getKeyStroke("ctrl R");//定义一个ctrl + r的快捷键
		// KeyStroke redKS = KeyStroke.getKeyStroke(KeyEvent.VK_R,
		// InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK);
		KeyStroke redKS = KeyStroke.getKeyStroke("ctrl shift R");

		// 以下是另一种实现快捷键定义的方法,与上面注释的代码实现效果是一样的
		// KeyStroke blueKS = KeyStroke.getKeyStroke(KeyEvent.VK_B,
		// InputEvent.CTRL_MASK);// 定义一个ctrl + b的快捷键
		// KeyStroke yellowKS = KeyStroke.getKeyStroke(KeyEvent.VK_Y,
		// InputEvent.CTRL_MASK);
		// KeyStroke redKS = KeyStroke.getKeyStroke(KeyEvent.VK_R,
		// InputEvent.CTRL_MASK);

		/** 定义一个ctrl + shift + y的快捷键 */
		// KeyStroke testKS = KeyStroke.getKeyStroke(KeyEvent.VK_Y,
		// InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK);

		InputMap imap = buttonPnl
				.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
		imap.put(blueKS, "panel.blue");
		imap.put(yellowKS, "panel.yellow");
		imap.put(redKS, "panel.red");

		ActionMap amap = buttonPnl.getActionMap();
		amap.put("panel.blue", blueAction);
		amap.put("panel.yellow", yellowAction);
		amap.put("panel.red", redAction);
	}

	public class ColorAction extends AbstractAction {

		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;

		public ColorAction(String name, Icon icon, Color c, JButton btn) {
			this.putValue(Action.NAME, name);
			this.putValue(Action.SMALL_ICON, icon);
			this.putValue(Action.SHORT_DESCRIPTION,
					"set panel color to" + name.toLowerCase());
			this.putValue("color", c);
			this.putValue("button", btn);
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			Color c = (Color) this.getValue("color");
			buttonPnl.setBackground(c);

			JButton btn = (JButton) this.getValue("button");
			System.out.println("command:" + btn.getActionCommand());
		}
	}

	public static void main(String[] args) {
		new KeyStrokeDemo().setVisible(true);
	}
}
 
分享到:
评论

相关推荐

    计算器模版

    为了提高用户体验,可以为某些菜单项设置快捷键,这样用户就可以直接通过键盘进行操作了。 ```java menuEdit.setMnemonic('E'); // 设置“编辑”菜单的快捷键 menuSee.setMnemonic('V'); // 设置“查看”菜单的...

    java 资料java 我的复习资料

    使用快捷键设置菜单项加速器 在Java Swing中,为菜单项设置快捷键(加速器)是一种常见的用户界面设计模式。这有助于提高应用程序的可用性,并允许用户通过键盘快速访问菜单选项。 ##### 示例代码解析 ```java ...

    Swing 弹出式菜单用法

    Swing 菜单控件可以在菜单中使用图标,菜单项可以为单选按钮或者复选框,并可以为菜单项指定加速键和快捷键。大多数的标准控件都可以用做菜单项。另外,Swing 菜单为程序提供了大家熟悉的菜单分隔线、弹出式菜单和子...

    Java_Swing_项目使用.doc

    `setMnemonic(char mnemonic)`方法用于设置菜单项的快捷键,`setAccelerator(KeyStroke keyStroke)`用于设置菜单项的快捷键组合。通过`addActionListener(ActionListener listener)`添加监听器,当用户点击菜单项时...

    java中jfame的使用代码JMenubar.Jmenu.JmenuItem

    `JMenu`和`JMenuItem`则分别表示菜单和菜单项。`JMenuItem`可以响应用户的点击事件,通常与动作监听器(ActionListener)关联,以实现特定功能。例如,我们可以添加一个动作监听器来处理“退出”菜单项的点击事件: ...

    菜单类程序代码

    例如,在Java中,可以使用javax.swing.JMenuBar和javax.swing.JMenuItem等类来创建菜单栏和菜单项;在Python的Tkinter库中,可以利用Menu和MenuItem对象来实现;而在Windows开发中,C++或C#的WinAPI或.NET Framework...

    Java右键弹出菜单源码.rar

    可以通过设置mnemonic(快捷键)使得用户可以通过键盘触发菜单项,例如`menuItem1.setMnemonic(KeyEvent.VK_1)`。 9. **事件监听器**: 除了ActionListener外,还可以添加其他类型的监听器,如MenuKeyListener来...

    Java零基础 - 文本编辑快捷键.md

    - **`setAccelerator` 方法**:为菜单项设置快捷键。 #### 总结 本文档通过一个简单的示例,详细介绍了如何在Java中实现文本编辑器的快捷键功能。读者不仅可以了解到如何使用Java代码处理按键事件,还可以学习到...

    Java右键弹出菜单源码

    JMenuItem item1 = new JMenuItem("菜单项1"); JMenuItem item2 = new JMenuItem("菜单项2"); contextMenu.add(item1); contextMenu.add(item2); ``` 3. **关联到组件**: 将`JPopupMenu`关联到某个组件(如`...

    Java GUI编程高级

    3. **快捷键设置** - 快捷键可以提高用户界面的效率。在Java中,可以使用`setMnemonic`方法为`JMenu`设置Alt+字符键的快捷键,如`file.setMnemonic(KeyEvent.VK_F)`。 - 对于`JMenuItem`,可以使用`setAccelerator...

    java开发的记事本源码

    4. **快捷键设置** 通过 `KeyStroke.getKeyStroke()` 方法结合 `setAccelerator()` 方法,可以为菜单项设置快捷键,如 `mItemFileNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Event.CTRL_MASK));` ...

    2022年计算机二级考试java章节辅导JMenuBar 菜单.docx

    通过`setAccelerator`方法为菜单项设置快捷键。 ```java itemFile1.setAccelerator(KeyStroke.getKeyStroke("N", KeyEvent.CTRL_MASK)); itemFile2.setAccelerator(KeyStroke.getKeyStroke("O", KeyEvent.CTRL_MASK...

    java右键菜单源码

    除了基本的文本菜单项,你还可以创建带有图标或者分割线的菜单项,以及添加快捷键等。例如: ```java JMenuItem itemWithIcon = new JMenuItem("带有图标的菜单项", new ImageIcon("icon.png")); JMenuItem ...

    JavaGUI编程高级

    - **JMenuItem**:表示菜单项,是菜单的基本单位,每个菜单项通常代表一个具体的动作或功能。 - **JMenu**:是一个包含菜单项的容器,它可以包含`JMenuItem`和其他`JMenu`,从而形成下拉菜单或子菜单。 - **JMenuBar...

    java 计算器布局

    同时,为了统一菜单项的字体风格,使用`setFont`方法设置了所有菜单项的字体大小和样式。 ### 3. 单选菜单项(RadioButtonMenuItem) `seeItem1`和`seeItem2`是`JRadioButtonMenuItem`类型的菜单项,允许用户在一...

    javaswing窗体开发参考文档

    - **快捷方式**:为菜单项分配一个快捷键,通常显示在菜单项旁边。 - **通用组件**:大多数标准Swing组件可以用作菜单项。 ##### 2.2 菜单系统元素 Swing菜单系统由多个元素组成,如菜单栏、菜单、菜单项等。每个...

    java 复习 资料

    #### 一、Swing组件快捷键设置 在Java Swing图形用户界面设计中,为菜单项(`javax.swing.JMenuItem`)添加快捷键是一项常用的功能。下面通过一个具体的代码示例来解释如何实现这一功能。 ```java jMenuItem jMenu...

    java swing 菜单按钮

    除了`JMenuItem`外,还有`JRadioButtonMenuItem`和`JCheckBoxMenuItem`,它们分别用于表示单选按钮菜单项和复选框菜单项,可以用于提供多个互斥的选择。 三、ActionListener与事件处理 为了使菜单按钮具有实际功能...

    基于Java的实例源码-右键弹出菜单源码.zip

    通过深入分析这些文件,可以理解整个菜单系统的工作原理,包括如何设置菜单项的图标、快捷键,以及如何处理菜单项的点击事件等。 总之,基于Java的右键弹出菜单源码实例旨在教授如何利用Swing库构建图形用户界面,...

    基于Java的右键弹出菜单源码.zip

    4. **定制外观与行为**: 你还可以通过设置图标、快捷键、工具提示文本等属性来定制菜单项的外观和行为。此外,`JPopupMenu`支持分组、子菜单等功能,使得菜单结构更加复杂。 5. **JavaFX的ContextMenu**: 如果你...

Global site tag (gtag.js) - Google Analytics