JAVA按钮设置组合快捷键

给按钮添加快捷键。
网上搜了搜,不满足自己的需要。

用到getActionMap() and getInputMap()


需要先了解ActionMap,InputMap,KeyStroke
1.keyStroke 用来保存一个快捷键。
这里用到的方法getKeyStroke(int keyCode, int modifiers, boolean onKeyRelease)

  • keyCode:字母数字按键对应的码,
  • modifiers:修饰符(如shift,alt等),
  • onKeyRelease: false 代表按下时触发(当松开时触发为true)

2.InputMap将组合按键keyStroke起个名字
3.actionMap将名字与效果对应
三者之间的关系:
JAVA按钮设置组合快捷键_第1张图片

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.KeyStroke;

public class demo extends JFrame{
	public demo() {
		JLabel mylab=new JLabel("按钮未点击");
		JButton mybt=new JButton("点击显示文字");
		//鼠标点击按钮
		mybt.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				mylab.setText("按钮已点击");
			}
		});
		//快捷键
		mybt.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
				KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.SHIFT_DOWN_MASK,false), "Shift_z");
		
		mybt.getActionMap().put("Shift_z", new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				mylab.setText("按钮已点击");
				
			}
			
		});
		add(mylab);
		add(mybt);
		setLayout(new FlowLayout());
		setVisible(true);
		setBounds(50,50,200,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	public static void main(String args[]) {
		new demo();
	}
}

一个不错的文档

你可能感兴趣的:(Java)