我最近在JavaFX中使用CSS,并注意到我在节点的样式列表中多次使用相同的样式。
由于样式的顺序是由css文件中的顺序定义的,而不是由节点的getStyleClass()返回的列表顺序定义的,我想知道是否有特殊原因。
示例:
application.css
.bg-color-1 {
-fx-background-color:red;
}
.bg-color-2 {
-fx-background-color:green;
}
Main.java
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
root.getStyleClass().add( "bg-color-1");
root.getStyleClass().add( "bg-color-2");
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
如果你写
并不重要 root.getStyleClass().add( "bg-color-1");
root.getStyleClass().add( "bg-color-2");
或将订单更改为
root.getStyleClass().add( "bg-color-2");
root.getStyleClass().add( "bg-color-1");
使用的样式将始终是css文件中的最后一个,i。即" BG-色-2"
问题
为什么使用List而不是Set?
答案 0 :(得分:0)
这是一个CSS标准。 您的根对象包含两个样式类。
Css-Parser或Render或IDK(评估css的东西)从上到下读取CSS文件。
这意味着它将Backgroundcolor更改为红色而不是绿色。
所以如果你删除' bg-color-2'从根本上它会变红,否则它会变成绿色。