Answers:
a JTextField
被设计为ActionListener
像JButton
is 一样使用a 。请参阅的addActionListener()
方法JTextField
。
例如:
Action action = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("some action");
}
};
JTextField textField = new JTextField(10);
textField.addActionListener( action );
现在,Enter使用该键时会触发该事件。
此外,另一个好处是,即使您不希望将按钮设为默认按钮,也可以与该按钮共享侦听器。
JButton button = new JButton("Do Something");
button.addActionListener( action );
请注意,此示例使用Action
实施,ActionListener
因为它Action
是具有其他功能的较新API。例如,您可以禁用,Action
这将同时禁用文本字段和按钮的事件。
为添加一个事件KeyPressed
。
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
// Enter was pressed. Your code goes here.
}
}
KeyListeners
有很多缺点,这些缺点在很大程度上已由解决 KeyBindings
,例如与焦点有关,与复制/粘贴有关等。对于琐碎的任务(如OP中要求的),应避免使用。
首先通过以下方式在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
}
}
其他答案(包括可接受的答案)也不错,但是如果您已经使用Java8,则可以执行以下操作(以更短的,更新的方式):
textField.addActionListener(
ae -> {
//dostuff
}
);
如已接受的答案所述,您可以简单地使用ActionListener
,以捕获Enter键。
但是,我的方法利用了Java 8中引入的功能概念。
如果要对按钮和JTextField使用相同的操作,则可以执行以下操作:
ActionListener l = ae -> {
//do stuff
}
button.addActionListener(l);
textField.addActionListener(l);
如果需要进一步的解释,请告诉我!
public void keyReleased(KeyEvent e)
{
int key=e.getKeyCode();
if(e.getSource()==textField)
{
if(key==KeyEvent.VK_ENTER)
{
Toolkit.getDefaultToolkit().beep();
textField_1.requestFocusInWindow();
}
}
要为“ Enter press”编写逻辑,JTextField
最好将逻辑保留在keyReleased()
块中,而不是keyTyped()
&keyPressed()
。
KeyListeners
从Swing
的角度来看,这些级别太低了。请使用旨在与Swing
:-)
只需使用以下代码:
SwingUtilities.getRootPane(myButton).setDefaultButton(myButton);