誰かが押したときに検出することは可能ですか Enter JavaでJTextFieldに入力している間?ボタンを作成してデフォルトとして設定する必要はありません。
JTextField
は、ActionListener
と同じようにJButton
を使用するように設計されています。 JTextField
のaddActionListener()
メソッドを参照してください。
例えば:
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
は追加機能を備えた新しいAPIであるため、この例ではActionListener
を使用しています。これはAction
を実装しています。たとえば、Action
を無効にすると、テキストフィールドとボタンの両方のイベントが無効になります。
JTextField function=new JTextField(8);
function.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//statements!!!
}});
あなたがする必要があるのは、上記のようにJTextFieldにaddActionListenerだけです!を押した後 Enter アクションは、ステートメントで必要なことを実行します!
KeyPressed
のイベントを追加します。
private void jTextField1KeyPressed(Java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
// Enter was pressed. Your code goes here.
}
}
このようなことをしたいですか?
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
}
);
受け入れられた答えが示したように、EnterキーをキャッチするActionListener
で簡単に反応できます。
ただし、私のアプローチでは、Java 8で導入された機能概念を活用しています。
たとえばボタンとJTextFieldに同じアクションを使用する場合は、次の操作を実行できます。
ActionListener l = ae -> {
//do stuff
}
button.addActionListener(l);
textField.addActionListener(l);
さらに説明が必要な場合は、お知らせください!
最初に、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 Enterでデフォルトのボタンアクションを設定する場合は、次の操作を行う必要があります。
//put this after initComponents();
textField.addActionListener(button.getActionListeners()[0]);
ボタンは多くのアクションを持つことができるため[0]ですが、通常は1つ(ActionPerformed)しかありません。