JavaFX的CSS解析错误
问题描述:
我得到这个错误:JavaFX的CSS解析错误
com.sun.javafx.css.parser.CSSParser parse WARNING: CSS Error parsing file:/filepath/bin/: Expected LBRACE at [-1,-1]
我的代码如下:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
public void start(Stage primaryStage) throws Exception {
StackPane root = new StackPane();
Scene mainScene = new Scene(root, 800, 600);
mainScene.getStylesheets().clear();
mainScene.getStylesheets().add("//stylesheet.css");
primaryStage.setTitle("Not Facebook");
primaryStage.setScene(mainScene);
primaryStage.show();
//loadGame(primaryStage);
}
public void loadGame(Stage primaryStage) {
GridPane grid = new GridPane();
grid.setHgap(0);
grid.setVgap(0);
grid.setPadding(new Insets(10, 10, 10, 10));
Text text = new Text("Hello");
grid.add(text, 5,5);
Scene gameScene = new Scene(grid, 800, 600);
primaryStage.setScene(gameScene);
}
}
.root { -fx-background-color: #333333; }
我已经搜查,但没有人有同样的问题,我不不知道为什么会发生这种情况。
答
样式表的路径错误。
使用
mainScene.getStylesheets().add("stylesheet.css");
^^
,而不是
mainScene.getStylesheets().add("//stylesheet.css");
^^
注意,你甚至不需要一个领先/
访问相对于应用程序的根类路径的样式表。来自JavaDoc:
The URL is a hierarchical URI of the form [scheme:][//authority][path]. If the URL does not have a [scheme:] component, the URL is considered to be the [path] component only. Any leading '/' character of the [path] is ignored and the [path] is treated as a path relative to the root of the application's classpath.