如何在 onfocus 和 outfocus 时对 JavaFX TextField 执行任务?

新手上路,请多包涵

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

例如,在 TextField 的“焦点”事件上,我想打印

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

在它应该打印的“失焦”事件上

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

原文由 java baba 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 671
2 个回答

我认为看到一个示例可能会有所帮助,该示例将 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");
        }
    }
});

我希望这个答案有帮助!

原文由 Brendan 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 focusedPropertyNode 附加 ChangeListener

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

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

原文由 DVarga 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题