У меня есть эта функция в классе контроллера соответствующего fxml. Мне нужно, чтобы эта функция запускалась при фокусировке из текстового поля, но у конструктора сцены нет события, похожего на onfocusout. Как этого добиться с помощью класса управления?

@FXML
private void ValidateBikeNo(){
    Tooltip error = new Tooltip("This bike no exists");
    BikeNoIn.setTooltip(error);
}
2
v1shva 22 Мар 2017 в 08:44

2 ответа

Лучший ответ

Вы можете прикрепить focusListener к TextField, а затем выполнить код внутри него. Слушатель может быть подключен внутри метода initialize() контроллера.

public class MyController implements Initializable {
    ...
    @FXML
    private Textfield textField;

    public void initialize() {
        ...
        textField.focusedProperty.addListener((ov, oldV, newV) -> {
           if (!newV) { // focus lost
              // Your code
           }
        });
         .....
    }
}
8
Menai Ala Eddine - Aladdin 22 Апр 2018 в 22:10

Вы должны использовать метод textField.focusedProperty () вместо textField.focusProperty

public class MyController implements Initializable { 
...         
@FXML        
private Textfield textField;
public void initialize() {
   textField.focusedProperty().addListener((ov, oldV, newV) -> {
      if (!newV) { // focus lost
              // Your code
           }
        });
    }
}
3
Dmitry 12 Фев 2018 в 10:20