如何在java中用Escape键替换Jbutton?

问题描述 投票:0回答:3

在我的程序中,我有一个Jbutton(名为 "Clear"),可以清除GUI中的几个文本字段。我想用Escape键代替这个按钮,这样按Escape键就和按这个按钮一样。(我不希望在我的程序中出现这个Jbutton)

java replace jbutton
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());

0
投票

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

事件队列

并将此事件队列注册在

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

该方法

保护无效 dispatchEvent(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()) {
   ...

0
投票

试试这个,对我有用

InputMap im = clear.getRootPane().getInputMap(...
ActionMap am = clear.getRootPane().getActionMap(...
© www.soinside.com 2019 - 2024. All rights reserved.