我正在使用OpenJDK 8u20和OpenJFX 8u5在Linux上开发应用程序。我基本上试图为所有场景设置默认样式表。显然没有一个受制裁的方法,所以解决方法是为每个场景设置样式表。执行此操作的方法是“scene.getStylesheets()。add(css)”其中css是表示样式表位置的String。该表示可以有三种形式:文件,URL或资源。
URL方法的一个示例是:
String css = "http://localhost/file.css";
文件方法的一个例子是:
String css = "file://" + new File("file.css").getAbsolutePath().replace("\\", "/");
资源的一个例子是:
String css = this.getClass().getResource("file.css").toString();
在这三者中,只有URL方法似乎与广告一样有效。
文件方法似乎最初起作用,但后续编译似乎打破了它。我可以看到正在使用正确的值调用“scene.getStylesheets()。add(css)”,但应用程序的运行方式就好像从未如此。它只能在我编辑我正在添加样式表的文件的编译之后工作。如果我编辑任何其他文件,编译并运行它不起作用。
资源方法只会引发运行时异常,即“sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)”。
我现在通过使用URL方法解决了一些问题,但从长远来看,我真的希望能够将这个CSS文件打包到jar中并从jar中使用它。有人有任何想法或建议吗?
答案 0 :(得分:0)
如果有人想对文件方法的奇怪行为发表评论,那么了解它的用途会很好。
答案 1 :(得分:0)
有一种方法可以为所有场景设置默认的CSS样式表,您可以通过在JavaFx应用程序上调用静态setUserAgentStyleSheet()方法来实现这一点。