检测在JTextField中inputpress

在java中inputJTextField时,是否有可能检测到有人按Enter键 ? 无需创buildbutton并将其设置为默认值。

JTextField被devise为像JButton一样使用ActionListener 。 请参阅JTextFieldaddActionListener()方法。

例如:

 Action action = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { System.out.println("some action"); } }; JTextField textField = new JTextField(10); textField.addActionListener( action ); 

现在当使用Enter键时,事件被触发。

此外,还有一个好处是,即使不想将button设置为默认button,也可以使用button共享侦听器。

 JButton button = new JButton("Do Something"); button.addActionListener( action ); 

注意,这个例子使用一个Action ,它实现了ActionListener因为Action是一个更新的API,带有附加function。 例如,您可以禁用将禁用文本字段和button的事件的Action

 JTextField function=new JTextField(8); function.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //statements!!! }}); 

所有你需要做的就是addActionListener像上面的JTextField! 在你按下Enter之后,这个动作就会在声明中执行你想要的东西!

KeyPressed添加一个事件。

 private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode() == KeyEvent.VK_ENTER) { // Enter was pressed. Your code goes here. } } 

首先通过以下方式在JButton或JTextField上添加操作命令:

 JButton.setActionCommand("name of command"); JTextField.setActionCommand("name of command"); 

然后将ActionListener添加到JTextField和JButton。

 JButton.addActionListener(listener); JTextField.addActionListener(listener); 

之后,在你的ActionListener实现上写

 @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if(actionCommand.equals("Your actionCommand for JButton") || actionCommand.equals("Your actionCommand for press Enter")) { //Do something } } 

你想做这样的事吗?

 JTextField mTextField = new JTextField(); mTextField.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER){ // something like... //mTextField.getText(); // or... //mButton.doClick(); } } }); 

其他答案(包括被接受的答案)是好的,但是如果你已经使用Java8,你可以做以下事情(以更短,更新的方式):

 textField.addActionListener( ae -> { //dostuff } ); 

正如接受的答案所告诉的那样,您可以简单地使用一个ActionListener来捕获Enter-Key。

但是,我的方法利用了Java 8中引入的function概念。

如果您想要为button和JTextField使用相同的操作,则可以执行以下操作:

 ActionListener l = ae -> { //do stuff } button.addActionListener(l); textField.addActionListener(l); 

如果需要进一步解释,请告诉我!

如果你想在JTextField中设置一个默认的button动作,你必须这样做:

 //put this after initComponents(); textField.addActionListener(button.getActionListeners()[0]); 

它是[0],因为button可以有很多动作,但通常只有一个(ActionPerformed)。

 public void keyReleased(KeyEvent e) { int key=e.getKeyCode(); if(e.getSource()==textField) { if(key==KeyEvent.VK_ENTER) { Toolkit.getDefaultToolkit().beep(); textField_1.requestFocusInWindow(); } } 

要在JTextField为“input新闻”编写逻辑,最好将逻辑保存在keyReleased()块中而不是keyTyped()keyPressed()

只要使用这个代码:

 SwingUtilities.getRootPane(myButton).setDefaultButton(myButton);