Java 按钮键盘快捷键

Java 按钮键盘快捷键,java,swing,keyboard,jbutton,shortcuts,Java,Swing,Keyboard,Jbutton,Shortcuts,我有两个JButton,我想让键盘箭头键在JFrame有焦点时使用它们 有人能给我指出正确的方向吗?要截取键而不必担心特定组件是否处于焦点,您应该使用InputMap。请仔细阅读,例如: 然后选择WHEN_IN_FOCUSED_窗口常数 除非所讨论的按钮仅调用单个方法,否则执行按钮所做操作的最佳方法是: SwingUtilities.invokeAndWait(new Runnable() { public void run() { ((AbstractButton) c

我有两个JButton,我想让键盘箭头键在JFrame有焦点时使用它们


有人能给我指出正确的方向吗?

要截取键而不必担心特定组件是否处于焦点,您应该使用InputMap。请仔细阅读,例如:

然后选择WHEN_IN_FOCUSED_窗口常数

除非所讨论的按钮仅调用单个方法,否则执行按钮所做操作的最佳方法是:

SwingUtilities.invokeAndWait(new Runnable() {
    public void run() {
        ((AbstractButton) c).doClick();
    }
});
从Swing的演示中修改

按钮的初始化:

// Sets the mnemonic to down, with no hint display
JButton down = new JButton(new DownAction("Down", null, "This is the down button", new Integer(KeyEvent.VK_DOWN));
行动:

class DownAction extends AbstractAction {
    public DownAction(String text, ImageIcon icon,
                  String desc, Integer mnemonic) {
        super(text, icon);
        putValue(SHORT_DESCRIPTION, desc);
        putValue(MNEMONIC_KEY, mnemonic);
    }
    public void actionPerformed(ActionEvent e) {
        displayResult("Action for first button/menu item", e);
    }
}

当你说你想让他们使用箭头键的时候,我想你的意思是你想转移注意力。如果是这种情况,请阅读上的Swing教程中的部分。它给出了一个如何使用Enter键进行此操作的示例