Подтвердить что ты не робот

Как получить нажатие клавиши ввода в JavaFX2?

У меня есть TextField, чтобы ввести поисковый запрос и кнопку "Go". Но в JavaFX2, как бы я сделал это так, нажатие клавиши ввода в TextField выполнило бы действие?

Спасибо:)

4b9b3361

Ответ 1

Вы можете использовать атрибут onAction для TextField и привязать его к методу в вашем контроллере.

@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" />

Ответ 2

Я предполагаю, что вы хотите, чтобы это произошло, когда пользователь нажимает кнопку ввода, только когда TextField имеет фокус. Вы захотите использовать KeyEvent из javafx.scene.input и сделать что-то вроде этого...

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

Надеюсь, что это будет полезно!

Ответ 3

Вы можете попробовать следующее:

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

Ответ 4

Просто используя "лямбда-выражение":

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

Ответ 5

Это работает:

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

Я догнал это, и это раздражало. Я просто передаю это всем тем, кто находится в одной лодке.