Java KeyListener与键绑定

Java KeyListener与键绑定,第1张

Java KeyListener与键绑定

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

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

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

Action
s
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和绑定,但是知道在触发时,它们将执行相同的代码逻辑,例如…



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5478418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存