在JavaSwing中输入JButton的键焦点?

在JavaSwing中输入JButton的键焦点?,java,swing,key,Java,Swing,Key,如何在JavaSwing中为JButton设置Enter键焦点 我是这样做的 btn_Login.registerKeyboardAction(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("enter key pressed"); } }, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0,fal

如何在JavaSwing中为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);

但不起作用

我假设如果您只需在某个窗口上按Enter键,您希望某个特定的按钮被“按下”

为此,必须在当前JFrame的根窗格上设置defaultButton

以下是一个例子:

 JButton btn = new JButton();
 JFrame frame = new JFrame();

 frame.getContentPane().add(btn);
 frame.getRootPane().setDefaultButton(btn);

这应该会给你预期的结果。

谢谢大家!下面是我发现的一些注释,它们可以解决Nimbus外观和Fall的输入问题

  • enter键适用于linux,但不适用于windows(Nimbus)
  • 对于windows,按钮的实际“doClick”是用空格(键Char 32)完成的
  • 可以设置“回车”进行单击,但必须在设置Nimbus外观之后进行
  • 下面是我的应用程序中使用的代码

        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" );
    
  • (很抱歉我的法语评论!)。

    请参考此链接