如何使用fxml触发javafx中文本域焦点的事件?

v1s*_*hva 1 java javafx fxml scenebuilder

我在相关fxml的控制器类中有这个功能.我需要在文本字段的焦点上触发此函数,但场景构建器没有类似于onfocusout的事件.如何使用控件类实现这一点?

@FXML
private void ValidateBikeNo(){
    Tooltip error = new Tooltip("This bike no exists");
    BikeNoIn.setTooltip(error);
}
Run Code Online (Sandbox Code Playgroud)

Ita*_*iha 7

您可以将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
           }
        });
         .....
    }
}
Run Code Online (Sandbox Code Playgroud)


Dmi*_*try 7

您必须使用方法 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
           }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)