Как проверить, нажата ли клавиша ввода в текстовом поле в java?

Я делаю программу командной строки, и мне нужно проверить, нажата ли клавиша ввода.


person mrspy1100    schedule 24.05.2012    source источник


Ответы (3)


Если клавиша ввода нажата в JTextField, в то время как этот JTextField имеет ActionListeners , срабатывает ActionEvent.

JTextField field = ...
field.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("Enter key pressed");
    }
});
person Jeffrey    schedule 24.05.2012
comment
Где он проверяет, что была нажата клавиша Enter? А если в текстовом поле происходили другие действия? - person ziggy; 27.01.2013
comment
@ziggy Одна из записей по умолчанию в InputMap определяет, когда событие pressed Enter проходит через метод processKeyBinding. Затем он вызывает Action, который запускает ActionEvent. - person Jeffrey; 27.01.2013

Добавьте ключевой прослушиватель в текстовое поле и проверьте keyCode KeyEvent в keyPressed(). Попробуйте пример ниже:

public class TestEnterKeyPressInJTextField
{
  public static void main(String[] args)
  {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTextField textField = new JTextField(20);
    textField.addKeyListener(new KeyAdapter()
    {
      public void keyPressed(KeyEvent e)
      {
        if (e.getKeyCode() == KeyEvent.VK_ENTER)
        {
          System.out.println("ENTER key pressed");
        }
      }
    });

    frame.getContentPane().add(textField);
    frame.pack();
    frame.setVisible(true);
  }
}
person Prasad Karunagoda    schedule 25.05.2012
comment
Этот ответ более точен, чем первый, поскольку он обнаруживает, что действительно был нажат ввод. Спасибо - person Airy; 01.11.2014