java添加keylisten_Java KeyListener与键绑定

小编典典

一般而言,在您的键输入集有限的情况下,键绑定是一个更好的选择。

KeyListener遭受与可聚焦性有关的问题以及GUI中的其他控件的困扰,焦点将一直不断地离开组件(带有KeyListener)。

一个简单的解决方案是使用Actions

API。这使您可以定义一个独立的“动作”,该动作ActionListener既可以用作,又可以携带可用于配置其他UI组件(尤其是按钮)的配置信息。

例如…

采取NumberAction可以代表任何数字的通用名称(现在将其限制为0-9)…

public class NumberAction extends AbstractAction {

private int number;

public NumberAction(int number) {

putValue(NAME, String.valueOf(number));

}

public int getNumber() {

return number;

}

@Override

public void actionPerformed(ActionEvent e) {

int value = getNumber();

// Do something with the number...

}

}

你可以做类似…

// Create the action...

NumberAction number1Action = new NumberAction(1);

// Create the button for number 1...

JButton number1Button = new JButton(number1Action);

InputMap im = getInputMap(WHEN_IN_FOCUSED_WINDOW);

// Create a key mapping for number 1...

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_1, 0), "number1");

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_NUMPAD1, 0), "number1");

ActionMap am = getActionMap();

// Make the input key to the action...

am.put("number1", number1Action);

完成了…

您还可以为NumberAction相同的编号创建任意数量的实例,这意味着您可以分别配置UI和绑定,但是知道在触发时,它们将执行相同的代码逻辑,例如…

2020-09-15

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值