使用 CSS 進行樣式設計

CSS 可以在多個地方應用:

  • 內聯(Node.setStyle
  • 在樣式表中
    • 到一個 Scene
      • 作為使用者代理樣式表(此處未演示)
      • 作為 Scene正常樣式表
    • 到一個 Node

這允許改變 Nodes 的可定製屬性。以下示例演示了這一點:

申請類

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class StyledApplication extends Application {

    @Override
    public void start(Stage primaryStage) {
        
        Region region1 = new Region();
        Region region2 = new Region();
        Region region3 = new Region();
        Region region4 = new Region();
        Region region5 = new Region();
        Region region6 = new Region();
        
        // inline style
        region1.setStyle("-fx-background-color: yellow;");
        
        // set id for styling
        region2.setId("region2");
        
        // add class for styling
        region2.getStyleClass().add("round");
        region3.getStyleClass().add("round");
        
        HBox hBox = new HBox(region3, region4, region5);
        
        VBox vBox = new VBox(region1, hBox, region2, region6);

        Scene scene = new Scene(vBox, 500, 500);
        
        // add stylesheet for root
        scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
        
        // add stylesheet for hBox
        hBox.getStylesheets().add(getClass().getResource("inlinestyle.css").toExternalForm());
        
        scene.setFill(Color.BLACK);
        
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

}

inlinestyle.css

* {
    -fx-opacity: 0.5;
}

HBox {
    -fx-spacing: 10;
}

Region {
    -fx-background-color: white;
}

style.css 檔案

Region {
    width: 50;
    height: 70;
    
    -fx-min-width: width;
    -fx-max-width: width;
    
    -fx-min-height: height;
    -fx-max-height: height;
    
    -fx-background-color: red;
}

VBox {
    -fx-spacing: 30;
    -fx-padding: 20;
}

#region2 {
    -fx-background-color: blue;
}