当 comboBox 获得焦点时,JavaFX comboBox 不选择所有文本

JavaFX comboBox not selecting all text when comboBox gets focus

我正在编写一个使用一些可编辑 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();
    }
});

但是两者都不起作用。如果有人能帮助我,那将非常有帮助。

此问题有一个未解决的错误:https://bugs.openjdk.java.net/browse/JDK-8129400

您应该可以使用下面的方法来解决它,当您 select 组合框中的新项目时,或者当您重新聚焦组合框时,它将 select 文本

    box.focusedProperty().addListener((observable, oldValue, newValue) -> {
        selectTextIfFocused(box);
    });
    box.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
        selectTextIfFocused(box);
    });

select 文本的方法:

private void selectTextIfFocused(ComboBox box){
    Platform.runLater(() -> {
        if ((box.getEditor().isFocused() || box.isFocused()) && !box.getEditor().getText().isEmpty()) {
            box.getEditor().selectAll();
        }
    });
}