为了为JavaFX中的许多元素设置背景样式,您需要使用css文件或.setStyle。

就我而言,我必须从ComboBox设置下拉菜单的背景样式,但是我必须使用.setStyle而不是css文件(因为我有一些动态颜色将用于设置不同的GUI元素的样式)。这里的问题是,如果我使用以下css代码,则函数.setStyle无法像使用css文件那样识别它。

.setStyle(".combo-box .list-cell{ -fx-background: blue;}");


代码如下所示:

comboBox.setStyle(".combo-box .list-cell{ -fx-background: #"+ Color1.toString().substring(2) + ";}");


Color1是一个Color对象,它将根据情况获得动态值。

问题是,我可以在函数.list-cell中使用.setStyle吗?如果是这样,怎么办?如果必须使用.setStyle,这将有助于我处理其他GUI元素。

最佳答案

为此可以使用查找颜色。您可以使用setStyle分配它们,并从CSS样式表中使用它们:

@Override
public void start(Stage primaryStage) {
    ComboBox<String> comboBox = new ComboBox<>();
    comboBox.getItems().addAll("A", "B", "C");

    StackPane root = new StackPane(comboBox);

    // set color
    root.setStyle("cell-color: blue;");

    Scene scene = new Scene(root, 400, 400);
    scene.getStylesheets().add("style.css");

    primaryStage.setScene(scene);
    primaryStage.setResizable(false);
    primaryStage.show();
}


style.css

/* default values */
.root {
    cell-color: yellow;
}

/* use color */
.combo-box .list-cell {
    -fx-background: cell-color;
}

07-22 03:24