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