所以我目前正在使用 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;
}
因此,通过尝试,我未能找到该问题的实际解释,但我找到了一种解决方法,可以解决问题(至少在我的情况下)。通过在 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";
}