Java задает фокус на jbutton при нажатии enter

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

Ответ 1

Вы должны использовать 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);

Ответ 2

Что-то вроде этого должно работать:

textField.addActionListener(new ActionListener()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        button.requestFocusInWindow();
    }
});

Ответ 3

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

cmdLogin.setDefaultCapable(true); // by default, this is true
this.getRootPane().setDefaultButton(cmdLogin); // here `this` is your parent container

Ответ 4

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

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