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

问题描述 投票:0回答:1

我正在开发一个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();                   
        }
    }
javafx textfield caret
1个回答
2
投票

你能尝试在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());
            });                   
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.