web-dev-qa-db-ja.com

JavaFX 2で押されているEnterキーを取得するにはどうすればよいですか?

検索語を入力するTextFieldと、「Go」のボタンがあります。しかし、JavaFX2では、TextFieldでEnterキーを押すとアクションが実行されるようにするにはどうすればよいですか?

ありがとう:)

25
Geesh_SO

TextFieldのonAction属性を使用して、コントローラーのメソッドにバインドできます。

@FXML
public void onEnter(ActionEvent ae){
   System.out.println("test") ;
}

そして、FXMLファイルで:

<TextField fx:id="textfield" layoutX="29.0" layoutY="298.0" onAction="#onEnter" prefWidth="121.0" />
30
Wottensprels

TextFieldにフォーカスがあるときにのみユーザーがEnterキーを押したときにこれが発生することを想定しています。 javafx.scene.inputからKeyEventを使用し、次のようなことをしたいでしょう...

textField.setOnKeyPressed(new EventHandler<KeyEvent>()
    {
        @Override
        public void handle(KeyEvent ke)
        {
            if (ke.getCode().equals(KeyCode.ENTER))
            {
                doSomething();
            }
        }
    });

これがお役に立てば幸いです!

70
Brendan

以下を試すことができます:

@FXML
public void buttonPressed(KeyEvent e)
{
    if(e.getCode().toString().equals("ENTER"))
    {
        //do something
    }
}
7
ihayet

"lambda expression":を使用するだけです

TextField textField = new TextField();
textField.setOnAction(e -> {
    // add your code to be run here
    System.out.println("textFile");
    });
4
mhmdar

これは動作します:

@FXML public TextField txt;

@FXML
public void textAction(KeyEvent e){

    if(e.getCode().equals(KeyCode.ENTER))
        System.out.println(txt.getText());
}

何らかの理由で.getCode()が機能しない場合は、必ずライブラリをインポートしてください:

import javafx.scene.input.KeyEvent;

ない

import Java.awt.event.KeyEvent;

私はこれに追いつき、いらいらしました。同じボートのすべての人にこれを渡すだけです。

1
Nevets17

一部のキーボードでは、「\ n」および「\ r」文字に追加のテストを行う必要があります。

if(event.getCode().equals(KeyCode.ENTER) || event.getCharacter().getBytes()[0] == '\n' || event.getCharacter().getBytes()[0] == '\r') {
        // your action
    }
0
Ailton F. Silva