gpt4 book ai didi

当组合框获得焦点时,JavaFX 组合框不选择所有文本

转载 作者:行者123 更新时间:2023-11-30 02:53:55 26 4
gpt4 key购买 nike

我正在编写一个 javaFx 应用程序,它使用一些可编辑的 ComboBox 控件。我希望当这样的 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();
}
});

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

最佳答案

此问题存在一个 Unresolved 错误: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();
}
});
}

关于当组合框获得焦点时,JavaFX 组合框不选择所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37816709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com