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