如何在JavaFX中设置组合框内项目的样式

如何在JavaFX中设置组合框内项目的样式,java,javafx,combobox,styling,Java,Javafx,Combobox,Styling,可以在JavaFX中更改的颜色吗 我想将每个项目的背景色更改为黑色,将其文本更改为白色,并在悬停时将其更改为绿色和白色 @FXML private ComboBox<String> govs; public void initialize() { ObservableList<String> options = FXCollections.observableArrayList( "Ariana", "Beja",

可以在JavaFX中更改的颜色吗

我想将每个项目的背景色更改为黑色,将其文本更改为白色,并在悬停时将其更改为绿色和白色

@FXML
private ComboBox<String> govs;

public void initialize() {
    ObservableList<String> options = FXCollections.observableArrayList(   
         "Ariana",
         "Beja",
         "Ben Arous",
         "Bizerte",
         "Gabès"
    );   
    govs.setItems(options);
}
@FXML
私人组合框政府;
公共无效初始化(){
ObservableList options=FXCollections.observableArrayList(
“阿里安娜”,
“Beja”,
“Ben Arous”,
“比塞特”,
“加布斯”
);   
政府设置项目(选项);
}

由于这不能通过将CSS规则应用于节点来完成,因此您必须向combobox提供自己的实现

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);
    });
}});
comboBox.setCellFactory(参数->新建ComboBoxListCell()){{
setTextFill(颜色:白色);
背景黑背景=新背景(新背景填充(Color.BLACK,null,null));
背景greenBackground=新背景(新背景填充(Color.GREEN,null,null));
立根背景(黑背景);
SetOnMouseCentered(事件->{
退避地(绿色背景);
});
SetOnMouseExit(事件->{
立根背景(黑背景);
});
}});