无法加载css

时间:2013-07-27 17:05:15

标签: javafx-2 javafx javafx-8

我正在测试此代码:

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 个答案:

答案 0 :(得分:1)

您的CSS已正确加载,但您的样式角色会被忽略,因为它不适用于您尝试将其应用到的Node类型。

要使用-fx-background-color,节点必须来自Region

矩形不是区域。

请参阅CSS reference on RegionsRectangle,了解适用于这两种类型的属性的定义。

另外,如果你使用-fx-fill为你的Rectangle设置渐变填充,我猜这是你真正想做的事情,那么你也不应该在源代码中设置填充。