Введите ключевой фокус для JButton в java swing? - PullRequest
2 голосов
/ 03 сентября 2010

Как сделать клавишу Enter ключевой для JButton в java swing?

я так и сделал

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);

но не работает

Ответы [ 2 ]

6 голосов
/ 03 сентября 2010

Я предполагаю, что вы хотите, чтобы определенная кнопка была "нажата", если вы просто нажали Enter в определенном окне.

Чтобы сделать это, вы должны установить defaultButton на вашей корневой панели текущего JFrame.1003 *

Вот пример:

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

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

Это должно дать вам ожидаемый результат.

3 голосов
/ 09 декабря 2011

Спасибо всем!Вот некоторые заметки, которые я обнаружил, чтобы исправить проблему ввода для Nimbus Look и упал.

  1. Клавиша ввода работает с Linux, но не с Windows (Nimbus).
  2. ДляWindows фактический «doClick» кнопки выполняется с пробелом (Key Char 32).
  3. Можно установить «ввод», чтобы сделать щелчок, но это должно быть сделано ПОСЛЕ настройки вашего Nimbus Look and Feel.
  4. Вот код, который используется в моем приложении.

        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" );
    

(Извините за мои французские комментарии!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...