如何在 JavaFX TextField 上以对焦和外聚焦执行任务?

2022-08-31 16:35:07

我正在从事JavaFX项目。我需要在JavaFX上执行一些任务。TextField

例如,在“我要打印”的“聚焦”事件上TextField

System.out.println("Textfield on focus");

并在“出焦”事件上,它应该打印

System.out.println("Textfield out focus");

答案 1

我认为看到一个示例可能会有所帮助,该示例将ChangeListener指定为像scottb提到的匿名内部类。

TextField yourTextField = new TextField();
yourTextField.focusedProperty().addListener(new ChangeListener<Boolean>()
{
    @Override
    public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue)
    {
        if (newPropertyValue)
        {
            System.out.println("Textfield on focus");
        }
        else
        {
            System.out.println("Textfield out focus");
        }
    }
});

我希望这个答案是有帮助的!


答案 2

可以使用 的焦点属性来附加 .NodeChangeListener

扩展Brendan的答案:从JavaFX8(因为它附带Java 8),lambda表达式与三元运算符相结合可以使其非常紧凑:

textField.focusedProperty().addListener((obs, oldVal, newVal) -> 
    System.out.println(newVal ? "Focused" : "Unfocused"));

推荐