为了为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;
}