在 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());
});
}
}
});
我正在开发一个 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());
});
}
}
});