我想添加一个位于文件系统某处的CSS文件 . 目的是编写一个应用程序,用户可以动态地添加JavaFX CSS文件(由任何人创建并位于任何地方) .
我试过类似的东西,仅用于测试,看看动态添加的CSS文件是否有效:
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Label label = new Label("Hello");
Scene scene = new Scene(label);
//file would be set by an file chosser
File file = new File("C:/test.css");
scene.getStylesheets().add(file.getAbsolutePath());
primaryStage.setTitle("Title");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
但我总是得到同样的错误:
WARNING: com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged Resource "C:\test.css" not found.
我该如何解决?
5 回答
您的问题是您没有使用URL . Here您可以找到有关CSS如何与CSS参考一起加载的更多文档 .
如果您将URL设置为
String
,则可以使用外部文件动态设置CSS,如下所示:在
a.css
在
b.css
如果css在同一个包装中,只需使用
你可以从
java.io.File
获取网址或者简短形式
抛出异常是因为字符串
"C:/test.css"
不是URI资源 . 因此,您必须将字符串转换为URI资源 .从Java 7开始,您可以: