在 textField (javaFX) 中将 caretPosition 设置到右侧

set caretPosition to the right in a textField (javaFX)

我正在开发一个 javaFX 应用程序,用户可以在其中填写和编辑多个文本字段。我希望,如果您通过按 TAB 键从另一个文本框跳转进入一个新的文本框,则文本框的内容未被选中,并且光标位于右侧。文本字段有一个事件侦听器,可以检测它们何时收到焦点,我一直在测试 API 的各种方法来定位光标并在进入文本字段时取消选择内容,目前,都没有成功。

我的错误在哪里?

id_ip2B_tf.focusedProperty().addListener(new ChangeListener<Boolean>() {
    @Override
    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {

        if (newValue) {
            // 1 - don't work
            id_ip2B_tf.deselect();
            id_ip2B_tf.positionCaret(id_ip2B_tf.getLength());

            // 2 - don't work
            id_ip2B_tf.end();                   
        }
    }

您能否尝试将设置插入符号的逻辑包装在 Platform.runLater 中。有点像..

id_ip2B_tf.focusedProperty().addListener(new ChangeListener<Boolean>() {
    @Override
    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
        if (newValue) {
            Platform.runLater(()->{
              id_ip2B_tf.deselect();
              id_ip2B_tf.positionCaret(id_ip2B_tf.getLength());
            });                   
        }
    }
});