検索語を入力するTextFieldと、「Go」のボタンがあります。しかし、JavaFX2では、TextFieldでEnterキーを押すとアクションが実行されるようにするにはどうすればよいですか?
ありがとう:)
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" />
TextFieldにフォーカスがあるときにのみユーザーがEnterキーを押したときにこれが発生することを想定しています。 javafx.scene.inputからKeyEventを使用し、次のようなことをしたいでしょう...
textField.setOnKeyPressed(new EventHandler<KeyEvent>()
{
@Override
public void handle(KeyEvent ke)
{
if (ke.getCode().equals(KeyCode.ENTER))
{
doSomething();
}
}
});
これがお役に立てば幸いです!
以下を試すことができます:
@FXML
public void buttonPressed(KeyEvent e)
{
if(e.getCode().toString().equals("ENTER"))
{
//do something
}
}
"lambda expression":を使用するだけです
TextField textField = new TextField();
textField.setOnAction(e -> {
// add your code to be run here
System.out.println("textFile");
});
これは動作します:
@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;
私はこれに追いつき、いらいらしました。同じボートのすべての人にこれを渡すだけです。
一部のキーボードでは、「\ n」および「\ r」文字に追加のテストを行う必要があります。
if(event.getCode().equals(KeyCode.ENTER) || event.getCharacter().getBytes()[0] == '\n' || event.getCharacter().getBytes()[0] == '\r') {
// your action
}