&引用;loadStylesheetUnPrivileged“;尝试将css样式表与JavaFX一起使用时出错
我已经阅读了我能找到的关于这个错误的每一篇文章/帖子,并且我已经尝试了提到的每一个解决方案,这个错误仍然在运行时产生。这是我的代码,下面是来自控制台的错误消息:&引用;loadStylesheetUnPrivileged“;尝试将css样式表与JavaFX一起使用时出错,java,css,javafx,directory,stylesheet,Java,Css,Javafx,Directory,Stylesheet,我已经阅读了我能找到的关于这个错误的每一篇文章/帖子,并且我已经尝试了提到的每一个解决方案,这个错误仍然在运行时产生。这是我的代码,下面是来自控制台的错误消息: public class Driver extends Application { public static void main(String[] args) { launch(args); } // main @Override public void start(Stage primaryStage) { P
public class Driver extends Application {
public static void main(String[] args) {
launch(args);
} // main
@Override
public void start(Stage primaryStage) {
Parent root = null;
File css = new File("stylesheet.css");
try {
root = FXMLLoader.load(getClass().getResource("project-3.fxml"));
root.getStylesheets().clear();
root.getStylesheets().add("file:///" + css.getAbsolutePath().replace("\\", "/"));
} catch (IOException e) {
System.out.println(e);
System.exit(1);
} // try
primaryStage.setTitle("Programmer's Calculator");
primaryStage.setScene(new Scene(root, 397, 376));
primaryStage.show();
} // start
}//驱动程序
为了节省空间,我排除了import语句——它们不是问题所在
以下是产生的错误:
com.sun.javafx.css.StyleManager加载样式表未授权信息:可以
找不到样式表:
file:////Users/UserName/Documents/Names-p3/stylesheet.css
这是我的目录:
以下是我尝试过的:
- 创建了一个场景变量,并尝试将css样式表应用于该变量
- 在我的fxml文件的Pane元素中添加了“stylesheets”修饰符或任何调用它的东西,如下所示:
- 将目录命名更改为所有可以想象的内容李>
事实上,一切都不起作用。发生了什么事 将包含样式表的文件放入
src
文件夹,然后将其应用于根目录
root = FXMLLoader.load(getClass().getResource("project-3.fxml"));
root.getStylesheets().add(getClass().getResource("your_stylesheet.css").toExternalForm());
或
root.getStylesheets().add(getClass().getResource("your_stylesheet.css").toString());
一个简单的解决方案是像这样在FXML中添加符号
<Pane stylesheets="@stylesheet.css">
而不是:
<Pane stylesheets="stylesheet.css">
更多信息
以下几点对我很有用:
- 资源(文件必须和类文件在一起):
scene.getStylesheets().add(getClass().getResource(“style.css”).toString())代码>
- 相对(工作目录中的文件):
scene.getStylesheets().add(“文件:style.css”)代码>
- 绝对(文件仍在工作目录中):
scene.getStylesheets().add(“文件:/”+System.getProperty(“用户目录”).replace(“\\”,“/”+“/style.css”)代码>
它似乎在寻找:
文件的格式:
,而对于绝对路径,它甚至在windows上也在寻找根“/”。它似乎也不喜欢路径中的反斜杠“\”。您可以从错误消息中看到,它正在Names-p3
目录中查找文件(我认为它正在工作目录中查找),而不是您显示的目录。为什么不执行root.getStylesheets().add(getClass().getResource(“stylesheet.css”).toExternalForm())代码>?好吧,成功了!我现在不能说我完全理解,但是呃。。。谢谢你,伙计!