是否可以在JavaFX中更改the items inside a ComboBox
的颜色?
我想将每个项目的背景颜色更改为黑色,将其文本更改为白色,并在悬停时将其更改为绿色和白色。
@FXML
private ComboBox<String> govs;
public void initialize() {
ObservableList<String> options = FXCollections.observableArrayList(
"Ariana",
"Beja",
"Ben Arous",
"Bizerte",
"Gabès"
);
govs.setItems(options);
}
答案 0 :(得分:2)
由于无法通过将CSS规则应用于节点来实现,因此您必须将自己的cell factory实现提供给组合框。
comboBox.setCellFactory(param -> new ComboBoxListCell<String>() {{
setTextFill(Color.WHITE);
Background blackBackground = new Background(new BackgroundFill(Color.BLACK, null, null));
Background greenBackground = new Background(new BackgroundFill(Color.GREEN, null, null));
setBackground(blackBackground);
setOnMouseEntered(event -> {
setBackground(greenBackground);
});
setOnMouseExited(event -> {
setBackground(blackBackground);
});
}});