回答:
A JTextField
はそのままの状態で使用するActionListener
ように設計されていますJButton
。の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
です。意図されているAPIを使用してくださいとともに使用Swing
:-)
このコードを使用してください:
SwingUtilities.getRootPane(myButton).setDefaultButton(myButton);