请考虑以下项目结构
base_folder
|
|_ MyApp
| |
| |_ src
| |
| |_controllers (Controllers)
| |_MyClass.java
|
|_ themming
|
|_ icons
| |
| |icon.png
|
|_ style (css)
|
|_myStyle.css
在 MyClass.java
中HBox root = new HBox();
Scene scene = new Scene(root, 800, 605);
File f = new File("../themming/style/myStyle.css");
try {
root.getStylesheets().setAll(f.toURI().toURL().toExternalForm());
} catch (MalformedURLException e) {
e.printStackTrace();
}
root.getStyleClass().add("custom-background");
在 myStyle.css
中.custom-background {
-fx-padding: 15;
-fx-spacing: 10;
-fx-font-size: 17pt;
-fx-background-image: url("../icons/icon.png"));
-fx-background-size: 22 22;
-fx-background-position: 0 0;
-fx-background-repeat: no-repeat;
}
除了与图像有关之外,其他每个样式类都被挑选出来。
我已尝试过各种可能的网址:
File f = new File("themming/style/myStyle.css");
File f = new File("../themming/style/myStyle.css");
File f = new File("../../themming/style/myStyle.css");
甚至将主题放在相对于项目根目录的不同位置,但没有成功。
我在这一切中缺少什么?我做错了什么?
提前谢谢大家。
答案 0 :(得分:0)
尝试这个:
.custom-background {
-fx-padding: 15;
-fx-spacing: 10;
-fx-font-size: 17pt;
-fx-background-image: url("../icons/icon.png"));
-fx-background-size: 22 22;
-fx-background-position: 0 0;
-fx-background-repeat: no-repeat;
}
答案 1 :(得分:0)
为什么不直接使用这种方法:
/* "pathToTheMainFolder" : All directories before reaching "themming" */
String path = "file:C:/Users/UserName/pathToTheMainFolder/themming/style/style.css";
root.getStylesheets().add(path);
图标应该与您的css文件所在位置相关:
.custom-background{
/*return to the previous folder "themming" and enter to "icons"*/
-fx-background-image:url("..//icons/icon.png");
}
注意:对于第一个路径(css文件),您可以使用@fabian建议您的方法Here.