2011-01-26 16 views
10

JTextFieldでenterを押すと、特定のJButtonがアクティブになるようにするにはどうすればよいですか?私が意味することは、フォーム内のボタンをアクティブにするためにEnterキーを押すことができるWebページフォームの行に沿ったものです。ありがとう。その後Enterキーを押したときにJavaがjbuttonにフォーカスを設定

Action sendAction = new AbstractAction("Send") { 
    public void actionPerformed(ActionEvent e) { 
     // do something 
    } 
}; 

JButton button = new JButton(sendAction); 

答えて

13

あなたはJButtonためActionを使用する必要があります同じ操作をJTextFieldに設定することもできますし、 MenuItemあなたは同じアクションがメニューで利用できるようにしたい場合:

JTextField textField = new JTextField(); 
textField.setAction(sendAction); 
+5

+1、クール、私はsetAction()メソッドについても知らなかった。私は常にaddActionListenerを使用しています。いずれにせよ、これはより良い解決策です。 – camickr

7

この動作するはずのような何か:私は、次のような何かをしたい

textField.addActionListener(new ActionListener() 
{ 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     button.requestFocusInWindow(); 
    } 
}); 
+0

のように、ボタンにdefault振る舞いを追加することによって、これを達成することができ、それは置きますボタンに焦点を合わせますが、アクティブにしません。 – LOD121

+0

それは、requestFocusInWindow()メソッドはスズについて言うことをしません。クリックをシミュレートするには、doClick()メソッドを使用します。 – berry120

+2

button.doClick();うまくいく。ありがとう。 – LOD121

3

textField.addKeyListener(
    new KeyAdapter() { 
    public void keyPressed(KeyEvent e) { 
     if (e.getKeyCode() == KeyEvent.VK_ENTER) { 
      button.doClick(); 
     } 
    } 
    }); 
} 
+1

ありがとうございます。これはうまくいく。 – LOD121

+1

@ LOD121、はい、動作しますが、これはテキストフィールドが使用されるように設計された方法ではありません。 – camickr

+0

私は、setAction()メソッドに気付かなかったことに同意しなければなりません!毎日何かを学ぶ? – berry120

4

あなたは、私はちょうどそれを試してみました。この

cmdLogin.setDefaultCapable(true); // by default, this is true 
this.getRootPane().setDefaultButton(cmdLogin); // here `this` is your parent container 
+1

+1ですが、textFieldにアクションが添付されていない限り動作します。 – kleopatra

+0

それは本当です。この場合、これはうまくいくはずです。投稿者の目的が 'デフォルト 'の動作を得ることであったことを願っています。 – sunil

関連する問題