我正在编写一个使用一些可编辑ComboBox
控件的javaFx应用程序。我希望当这样的ComboBox
获得焦点时,ComboBox
中的文本会突出显示。所以我在下面有这个代码:
@FXML
ComboBox box;
box.focusedProperty().addListener(new ChangeListener<Boolean>(){
@Override
public void changed(ObservableValue<?extends Boolean> observable, Boolean oldValue, Boolean newValue){
box.getEditor().selectAll();
}
});
我甚至尝试了以下代码:
@FXML
ComboBox box;
box.getEditor().focusedProperty().addListener(new ChangeListener<Boolean>(){
@Override
public void changed(ObservableValue<?extends Boolean> observable, Boolean oldValue, Boolean newValue){
box.getEditor().selectAll();
}
});
但两者都不起作用。如果有人可以帮助我,那将非常有帮助。
答案 0 :(得分:2)
此问题有一个错误:https://bugs.openjdk.java.net/browse/JDK-8129400
你应该可以使用下面的方法解决它,当你在组合框中选择一个新项目时,或者当你重新聚焦组合框时选择文本
box.focusedProperty().addListener((observable, oldValue, newValue) -> {
selectTextIfFocused(box);
});
box.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
selectTextIfFocused(box);
});
选择文字的方法:
private void selectTextIfFocused(ComboBox box){
Platform.runLater(() -> {
if ((box.getEditor().isFocused() || box.isFocused()) && !box.getEditor().getText().isEmpty()) {
box.getEditor().selectAll();
}
});
}