32

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

ありがとう :)

4

6 に答える 6

79

TextFieldこれは、ユーザーがフォーカスを持っているときにのみEnterキーを押したときに発生することを想定しています。パッケージから使用KeyEventして、次のjavafx.scene.inputようなことを行う必要があります。

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

ラムダの使用:

field.setOnKeyPressed( event -> {
  if( event.getCode() == KeyCode.ENTER ) {
    doSomething();
  }
} );
于 2012-12-14T15:39:02.010 に答える
42

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" />
于 2012-12-14T15:44:53.697 に答える
8

次のことを試すことができます。

@FXML
public void buttonPressed(KeyEvent e)
{
    if(e.getCode().toString().equals("ENTER"))
    {
        //do something
    }
}
于 2015-10-22T17:34:11.387 に答える
3

単に「ラムダ式」を使用する:

TextField textField = new TextField();
textField.setOnAction(e -> {
    // add your code to be run here
    System.out.println("textFile");
    });
于 2016-12-27T09:13:52.940 に答える
2

これは機能します:

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

私はこれに巻き込まれ、それは苛立たしいものでした。同じボートに乗っているすべての人にこれを渡すだけです。

于 2016-10-20T19:45:10.170 に答える
0

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

if(event.getCode().equals(KeyCode.ENTER) || event.getCharacter().getBytes()[0] == '\n' || event.getCharacter().getBytes()[0] == '\r') {
        // your action
    }
于 2018-01-29T18:57:20.380 に答える