如何在java swing中为JButton设置Enter键焦点?
我这样做了
btn_Login.registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("enter key pressed");
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0,false), txt_Username.WHEN_FOCUSED);
但没有工作
答案 0 :(得分:6)
如果您只是按某个窗口上的Enter键,我假设您想要“按下”特定按钮。
为此,您必须在当前JFrame的RootPane上设置defaultButton。
以下是一个例子:
JButton btn = new JButton();
JFrame frame = new JFrame();
frame.getContentPane().add(btn);
frame.getRootPane().setDefaultButton(btn);
这应该会给你预期的结果。
答案 1 :(得分:3)
感谢大家!以下是我发现的一些注意事项,用于解决Nimbus Look的输入问题并且摔倒。
以下是我的应用程序中使用的代码。
UIManager.setLookAndFeel(new NimbusLookAndFeel());
//- hack pour que les bouttons qui ont le focus fassent un doClick
//- lorsque "enter" est taper. Auparavant, c'etait l'espace qui
//- activait le doClick.
InputMap im = (InputMap)UIManager.get("Button.focusInputMap");
im.put( KeyStroke.getKeyStroke( "ENTER" ), "pressed" );
im.put( KeyStroke.getKeyStroke( "released ENTER" ), "released" );
(对不起我的法语评论!)。