我正在JavaFX中开展项目。文件结构如下所示(CEP是根):
CEP
+img
menu.jpg
+src
+css_files
MainMenu.css
我想要做的是在MainMenu.css文件中设置img目录中的背景图像。到目前为止,我尝试了不同的网址(见下文),但没有一个工作。
-fx-background-image: url("./CEP/img/menu.jpg");
-fx-background-image: url("../CEP/img/menu.jpg");
-fx-background-image: url("CEP/img/menu.jpg");
-fx-background-image: url("/CEP/img/menu.jpg");
-fx-background-image: url("../../img/menu.jpg");
-fx-background-image: url("/img/menu.jpg");
-fx-background-image: url("./img/menu.jpg");
-fx-background-image: url("../img/menu.jpg");
-fx-background-image: url("img/menu.jpg");
如果我使用像这样的完整路径
-fx-background-image: url("file:///C:/Users/Konrad/Desktop/java/CEP/img/menu.jpg");
一切正常,但这不是我想要做的。如何使用相对路径加载背景图像?
编辑。
根据要求,这里是build
文件夹结构:
build
+classes
+css_files
+(other folders)
menu.jpg
+empty (empty)
+generated-sources (has 1 empty subfolder)
答案 0 :(得分:1)
您的img
文件夹及其内容不属于源文件夹层次结构,因此未作为应用程序的一部分进行部署。您可以将IDE配置为部署该文件夹的内容,或者更简单地将img
(及其内容)移动到src
。
如果您执行后者,那么img
将在部署后与css_files
一起位于类路径的根目录,因此
-fx-background-image: url("/img/menu.jpg");
或
-fx-background-image: url("../img/menu.jpg");
应该有用。
另一方面,如果将img
配置为源文件夹,则img
的内容将放置在类路径的根目录中。在这种情况下,这意味着menu.jpg
将位于类路径的根目录,因此您需要其中一个
-fx-background-image: url("/menu.jpg");
或
-fx-background-image: url("../menu.jpg");