JavaFX:为什么我的 ComboBox 添加了不需要的单元格的一部分?

问题描述 投票:0回答:1

所以我目前正在使用 JavaFX 开发一个带有 GUI 的简短培训项目(计算器)(我知道它不好,我知道它已经过时了)。我使用的组合框表现得很奇怪,我想你们中的一些人可能知道其原因。虽然只有一个元素(单元格),但组合框会在填充的单元格下方显示另一个单元格的开头。看起来像这样:

奇怪的是,如果将更多元素(单元格)添加到组合框中,则这不适用。在这种情况下,它看起来像这样:

为什么 ComboBox 会有这样的行为?

我尝试在 JavaFX ComboBox 的文档中寻找解决方案,也尝试寻找有同样问题的人。 我使用以下行将项目添加到组合框(“积压”):

backlog.getItems().add(outputArea.getText());

我使用该代码向 ComboBox(“backlog”)添加了一个侦听器:

        backlog.setOnAction(new EventHandler<ActionEvent>() {
            @Override public void handle(ActionEvent e) {
                outputArea.setText(backlog.getSelectionModel().getSelectedItem());
            }
        });

最后我使用了一些 CSS 样式来使其看起来更好:

.combo-box {
    -fx-background-color: #cddfe0;
    -fx-border-radius: 10px;
    -fx-background-radius: 10px;
    -fx-effect: innershadow( three-pass-box , rgba(0,0,0,0.8), 5, 0.0 , 1, 1);
}
.combo-box .list-cell{
    -fx-background-color: #cddfe0;
    -fx-border-color: #f4f3f9;
    -fx-border-radius: 10px;
    -fx-background-radius: 10px;
    -fx-font: 18px "Digital-7 Mono";
}
.combo-box-popup .list-view{
    -fx-background-color: transparent;
    -fx-border-color: transparent;
    -fx-effect: null;
}
java javafx combobox
1个回答
0
投票

因此,通过尝试,我未能找到该问题的实际解释,但我找到了一种解决方法,可以解决问题(至少在我的情况下)。通过在 CSS 中将边框宽度设置得稍高一些,空单元格中不需要的部分就会变得不可见(因为 ComboBox 单元格的边框与我的背景颜色相同)。变化很小(边框宽度从 1 到 1.5),并且在 CSS 代码块中添加的行是

-fx-border-width: 1.5;

.combo-box .list-cell{
    -fx-background-color: #cddfe0;
    -fx-border-color: #f4f3f9;
    -fx-border-width: 1.5;
    -fx-border-radius: 10px;
    -fx-background-radius: 10px;
    -fx-font: 18px "Digital-7 Mono";
}
© www.soinside.com 2019 - 2024. All rights reserved.