Java установил фокус на jbutton при нажатии Enter - PullRequest
10 голосов
/ 27 января 2011

Как я могу сделать так, чтобы при нажатии Enter в JTextField он активировал определенный JButton?Я имею в виду что-то вроде формы веб-страницы, где вы можете нажать Enter, чтобы активировать кнопку в форме.Спасибо.

Ответы [ 4 ]

13 голосов
/ 27 января 2011

Вы должны использовать Action для JButton:

Action sendAction = new AbstractAction("Send") {
    public void actionPerformed(ActionEvent e) {
         // do something
    }
};

JButton  button = new JButton(sendAction);

Тогда вы можете установить то же действие для JTextField или даже для MenuItem, если вы хотите выполнить то же действиебыть доступным в меню:

JTextField textField = new JTextField();
textField.setAction(sendAction);
7 голосов
/ 27 января 2011

Примерно так должно работать:

textField.addActionListener(new ActionListener()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        button.requestFocusInWindow();
    }
});
4 голосов
/ 10 декабря 2012

Этого можно добиться, добавив к кнопке поведение default, например

cmdLogin.setDefaultCapable(true); // by default, this is true
this.getRootPane().setDefaultButton(cmdLogin); // here `this` is your parent container
3 голосов
/ 27 января 2011

Я бы сделал что-то вроде следующего:

textField.addKeyListener(
  new KeyAdapter() {
     public void keyPressed(KeyEvent e) {
       if (e.getKeyCode() == KeyEvent.VK_ENTER) {
          button.doClick();
       }
     }
  });
}
...