如何将 CSS 用于 JavaFX 项目

How To Use CSS For JavaFX Projects

我对 JavaFX 很陌生,想知道是否有办法将 css 文件分配给整个 JavaFX project/scene。目前,我必须将样式表应用到我想要使用 css 设置样式的每个元素。我正在使用 IntelliJ 和 Scene Builder 2.0。我已经尝试在我的 Main class 中添加样式表,启动方法如下所示,但它似乎没有达到预期的效果。

public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("JavaFXTest.fxml"));
    primaryStage.setTitle("JavaFX Test");
    primaryStage.setScene(new Scene(root, 300, 275));
    root.getStylesheets().add("@../styling/styles.css");
    primaryStage.show();
}

public static void main(String[] args) {
    launch(args);
}

我意识到 css 文件的路径有问题。我将其更改为:

root.getStylesheets().add("styling/styles.css");

并取得了预期的效果。这样我就不需要手动将样式表添加到 UI 中的每个元素,而是它现在适用于整个场景。只需按照正常的 css 约定声明您的 classes/id 即可添加样式。

可以给场景添加样式sheet:

public void start(Stage primaryStage) {
    Button btn = new Button();
    btn.setText("Say 'Hello World'");
    btn.setOnAction(event -> System.out.println("Hello World!"));

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);
    scene.getStylesheets().add("/styling/styles.css");

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}

在上面的示例中,样式 sheet 位于相对于源根目录的 /styling/styles.css