0

在我的程序中,我有一个 Jbutton(名为“Clear”),用于清除 GUI 中的多个文本字段。我想用 Escape 键替换此按钮,以便按 Escape 键与按该按钮相同。(我不想在我的程序中使用那个 Jbutton)

4

3 回答 3

3

基本上,您想从使用键绑定开始。

现在,就我个人而言,我会在您的“清除”按钮上附加一个绑定,这样用户就有两个选择……例如……

JButton clear = new JButton("Clear");

InputMap im = clear .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap am = clear .getActionMap();

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "clear");
am.put("clear", new ClearFieldsAction());
于 2013-09-12T06:39:59.233 回答
0

如果要移除按钮并监听孔应用程序的按键事件,可以创建一个

事件队列

并在以下位置注册此 EventQueue

Toolkit.getDefaultToolkit().getSystemEventQueue().push(INSTANCE_EVENT_QUEUE);

方法

受保护的无效调度事件(AWTEvent e)

将获得您可以处理的 AWTEvent。喜欢:

@Override
protected void dispatchEvent(AWTEvent e) {
    // handle event and/or
    super.dispatchEvent(e);
}

您处理的关键事件

    private void handleAWTEvent(AWTEvent event) {

    if (event instanceof KeyEvent) {
        KeyEvent keyEvent = (KeyEvent)event;

        if (keyEvent.getID() != KeyEvent.KEY_PRESSED) {
            return;
        }

        if (keyEvent.isAltDown() ^ keyEvent.isControlDown() && !keyEvent.isShiftDown()) {
   ...
于 2013-09-12T06:43:58.673 回答
0

试试这个,它对我有用

InputMap im = clear.getRootPane().getInputMap(...
ActionMap am = clear.getRootPane().getActionMap(...
于 2020-04-24T09:38:57.570 回答