我正在开发一个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();
}
}
答案 0 :(得分: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());
});
}
}
});