Я делаю программу командной строки, и мне нужно проверить, нажата ли клавиша ввода.
Как проверить, нажата ли клавиша ввода в текстовом поле в java?
Ответы (3)
Если клавиша ввода нажата в JTextField
, в то время как этот JTextField
имеет ActionListener
s , срабатывает 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
Где он проверяет, что была нажата клавиша Enter? А если в текстовом поле происходили другие действия?
- person ziggy; 27.01.2013
@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
Этот ответ более точен, чем первый, поскольку он обнаруживает, что действительно был нажат ввод. Спасибо
- person Airy; 01.11.2014
программа командной строки или приложение с графическим интерфейсом?
посмотрите здесь подробные ответы< /а>
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
System.out.println("KeyPressed: "+e.getKeyCode()+", ts="+e.getWhen());
}
public void keyReleased(KeyEvent e) {
System.out.println("KeyReleased: "+e.getKeyCode()+", ts="+e.getWhen());
}
нажмите каждую клавишу, которую вы хотите, и посмотрите KeyCode
person
moskito-x
schedule
24.05.2012