EnterJavaでJTextFieldを入力しているときに、誰かが押すタイミングを検出することはできますか?ボタンを作成してデフォルトとして設定する必要はありません。
10 に答える
Aは、 を 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 );
この例では、が追加機能を備えた新しい API であるためAction
、 を実装していることに注意してください。たとえば、テキスト フィールドとボタンの両方のイベントを無効にする を無効にすることができます。ActionListener
Action
Action
JTextField function=new JTextField(8);
function.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//statements!!!
}});
上記のように JTextField に ActionListener を追加するだけです。アクションを押すEnterと、ステートメントで必要なことが実行されます。
のイベントを追加しKeyPressed
ます。
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
// Enter was pressed. Your code goes here.
}
}
まず、JButton または JTextField にアクション コマンドを追加します。
JButton.setActionCommand("name of command");
JTextField.setActionCommand("name of command");
次に、JTextField と JButton の両方に ActionListener を追加します。
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 入力でデフォルトのボタン アクションを設定する場合は、次のようにする必要があります。
//put this after initComponents();
textField.addActionListener(button.getActionListeners()[0]);
ボタンには多くのアクションを含めることができますが、通常は 1 つのみ (ActionPerformed) であるため [0] です。
フレーム内のテキスト フィールドごとに、addKeyListener メソッドを呼び出します。次に、他の人が示しているように、keyPressed メソッドを実装してオーバーライドします。これで、フレーム内の任意のフィールドから Enter キーを押して、アクションをアクティブにすることができます。
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
//perform action
}
}