- 不要使用
KeyListener
上JTextField
简单地增加ActionListener
时,将触发ENTER
按下(谢谢你@robin +1咨询)
JTextField textField = new JTextField(); textField.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { //do stuff here when enter pressed } });- 要触发
KeyEvent
使用requestFocusInWindow()
的组件和使用Robot
类来模拟按键
像这样:
textField.requestFocusInWindow(); try { Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_ENTER); } catch (AWTException e) { e.printStackTrace(); } 例:
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.Jframe; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class Test { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { Jframe frame = new Jframe(); frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); JTextField textField = new JTextField(); textField.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { System.out.println("Here.."); } }); frame.add(textField); frame.pack(); frame.setVisible(true); textField.requestFocusInWindow(); try { Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_ENTER); } catch (AWTException e) { e.printStackTrace(); } } }); } }更新:
正如@Robin和@mKorbel这样的建议,您可能需要
documentListener/
documentFiler(过滤器允许在
JTextField更新之前进行验证)。
在进行IMO数据验证时,将需要此功能。
它显示了如何将添加
documentFilter到
JTextField数据验证。文件过滤器的原因是,正如我所说,它允许在显示chnage之前进行验证,这更有用IMO



