2013-07-27 195 views
0

我測試這個代碼:無法加載CSS

LayoutSample.java

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.scene.Scene; 
import javafx.scene.layout.FlowPane; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Rectangle; 
import javafx.stage.Stage; 

public class LayoutSample extends Application 
{ 

    public static void main(String[] args) 
    { 
     launch(LayoutSample.class, args); 
    } 

    @Override 
    public void start(Stage stage) 
    { 

     FlowPane flow = new FlowPane(); 
     flow.setPadding(new Insets(5, 5, 5, 5)); 
     flow.setVgap(5); 
     flow.setHgap(5); 
     flow.setPrefWrapLength(170); // preferred width allows for two columns 
     flow.setStyle("-fx-background-color: white;"); 

     //ImageView pages[] = new ImageView[8]; 
     for (int i = 0; i < 28; i++) 
     { 
//   pages[i] = new ImageView(
//     new Image(LayoutSample.class.getResourceAsStream(
//     "graphics/chart_" + (i + 1) + ".png"))); 
      flow.getChildren().add(generateRectangle()); 
     } 

     Scene scene = new Scene(flow); 
     ///// 
     String cssURL = "ButtonsDemo.css"; 
     String css = this.getClass().getResource(cssURL).toExternalForm(); 
     scene.getStylesheets().add(css); 
     //// 
     stage.setScene(scene); 
     stage.setTitle("Layout Sample"); 
     stage.show(); 
    } 

    public Rectangle generateRectangle() 
    { 

     Rectangle rect2 = new Rectangle(10, 10, 10, 10); 
     rect2.setId("app"); 
     rect2.setArcHeight(8); 
     rect2.setArcWidth(8); 
     rect2.setFill(Color.AZURE); 
     //rect2.setX(10); 
     //rect2.setY(160); 
     rect2.setStrokeWidth(1); 
     rect2.setStroke(Color.BLACK); 
     rect2.setWidth(220); 
     rect2.setHeight(180); 

     return rect2; 
    } 
} 

ButtonsDemo.css

#app { 
    -fx-background-color: 
    linear-gradient(to bottom, #f2f2f2, #d4d4d4); 
} 

但CSS代碼不在Rectangle上呈現。你能告訴我這是正確的Java代碼。我懷疑我不是設置矩形標識。

回答

1

你的CSS裝入正確,但你的風格的角色忽略,因爲它並不適用於你正在嘗試將其應用到節點類型。

要使用-fx-background-color,節點必須從Region派生。

一個Rectangle不是一個區域。

請參閱CSS reference on RegionsRectangle瞭解適用於這兩種類型的屬性的定義。另外,如果您使用-fx-fill爲您的Rectangle設置漸變填充,我猜測它是您實際想要做的,那麼您不應該在源代碼中設置填充。