使用相对路径时,CSS背景图像不显示

时间:2018-01-19 22:32:41

标签: css javafx

我正在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)

1 个答案:

答案 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");