web-dev-qa-db-ja.com

JTextFieldでEnterプレスを検出

誰かが押したときに検出することは可能ですか Enter JavaでJTextFieldに入力している間?ボタンを作成してデフォルトとして設定する必要はありません。

96
a sandwhich

JTextFieldは、ActionListenerと同じようにJButtonを使用するように設計されています。 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 キーが使用されます。

また、追加の利点は、ボタンをデフォルトのボタンにしたくない場合でも、ボタンとリスナーを共有できることです。

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

Actionは追加機能を備えた新しいAPIであるため、この例ではActionListenerを使用しています。これはActionを実装しています。たとえば、Actionを無効にすると、テキストフィールドとボタンの両方のイベントが無効になります。

159
camickr
JTextField function=new JTextField(8);   
function.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent e){

                        //statements!!!

                }});

あなたがする必要があるのは、上記のようにJTextFieldにaddActionListenerだけです!を押した後 Enter アクションは、ステートメントで必要なことを実行します!

21
kyorilys

KeyPressedのイベントを追加します。

private void jTextField1KeyPressed(Java.awt.event.KeyEvent evt) {
  if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
      // Enter was pressed. Your code goes here.
   }
} 
13
Ionică Bizău

このようなことをしたいですか?

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);

さらに説明が必要な場合は、お知らせください!

1
Thomas Böhm

最初に、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
    }
}
1
greg

JTextField Enterでデフォルトのボタンアクションを設定する場合は、次の操作を行う必要があります。

//put this after initComponents();

textField.addActionListener(button.getActionListeners()[0]);

ボタンは多くのアクションを持つことができるため[0]ですが、通常は1つ(ActionPerformed)しかありません。

0
JACA