2017-10-30 5 views
-2

申し訳ありませんが、もうちょっと立ち往生しています。テキストフィールド内でEnterキーを押したときにクリックイベントが発生する

私はこれらの質問をして、自分の時間/学習を最大限に引き出すことができます。

Enterキーを押してクリックイベントを発生させようとしています(手動でログインbtnをクリックしたとき)。

私が持っているコードこれまで

コード

usernameField.setOnKeyPressed((KeyEvent event) -> { 
     if(event.getCode()==KeyCode.ENTER){ 
      loginBtn.fire(); 
      System.out.println("Worked"); 
     } 
    }); 

それがほとんどになっているものはないこと。システムアウトメッセージが表示されますが、loginBtnが起動します。

私はJavaFXのとJFXButtons /テキストボックスを使用していますそれが違いを行う場合

答えて

3

テキストは、ユーザーが入力したキーを押したときに火災アクションイベントをフィールド。だからあなたが必要なのは

EventHandler<ActionEvent> loginHandler = e -> { 
    // handle login here... 
}; 

usernameTextField.setOnAction(loginHandler); 
loginBtn.setOnAction(loginHandler); 

です。

usernameTextField.setOnAction(e -> handleLogin()); 
loginBtn.setOnAction(e -> handleLogin()); 

// ... 

private void handleLogin() { 
    // handle login here... 
} 

あなたはFXMLを使用している場合は、あなただけの同じコントローラメソッドに両方onActionハンドラをマッピングすることができます。

<TextField fx:id="usernameTextField" onAction="#login" /> 
<Button fx:id="loginBtn" text="Log In" onAction="#login" /> 

と、コントローラに

public class Controller { 

    // ... 

    @FXML 
    private void login() { 
     // login action here.. 
    } 

    // ... 

} 
+0

はご回答いただきありがとうございます、私は現時点で仕事中です。私が無知な、あるいは知識が不足していると思われるが、私のloginBtnコードにはMouseEventイベントが含まれているとお詫び申し上げます。私はこれをどのように呼びますか? これはhandLogin(MouseEventイベント){ –

+0

@ R-Bownなぜボタン上でマウスリスナーを使用しますか? –

+0

私は現時点で仕事中で、私の目の前にコードを持っていません。私は今夜​​後でこの記事に返信します。それが大丈夫ならば?おかげで再びジェームズ –

関連する問題