【问题标题】:How to use the CSS file in JavaFX project?如何在 JavaFX 项目中使用 CSS 文件?
【发布时间】:2015-04-16 02:32:37
【问题描述】:

我正在尝试构建一个JavaFX Application,并且我想在FXML file 中附加CSS file,但是当我尝试运行该应用程序时,我遇到了如下问题:Property "stylesheets" does not exist or is read-only. 在控制台中我没有'不知道到底是什么问题(请注意,如果我删除 CSS 文件一切正常)。 CSS 文件“csstyle.css”包含:

/*
 * Empty Stylesheet file.
 */

 .mainFxmlClass {
  -fx-background-color: blue;
  }

我还在StylesheetFXML file 中写了CSS file 的名称以及Style Class.mainFxmlClass。 所以我想知道错误请帮助我,谢谢:)

【问题讨论】:

  • FXML 文件长什么样?

标签: css javafx


【解决方案1】:

你有两个问题:

第一个已经解决了here。删除

stylesheets="@csstyle.css"

并将其添加到根容器的 <children> 标记之后。由于您没有显示您的 FXML 文件如何,因此它应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import java.net.*?>

<AnchorPane styleClass="mainFxmlClass" ...>
   <children>
         ...
   </children>
   <stylesheets>
      <URL value="@cssstyle.css" />
   </stylesheets>
</AnchorPane>  

第二个是这个:

styleClass=".mainFxmlClass"

去掉点:

styleClass="mainFxmlClass"

编辑

鉴于这些解决方案不起作用,并且 OP 将 JDK 7 与 JavaFX 2.0 结合使用,这些其他解决方案可能会有所帮助:

替换:

styleClass="mainFxmlClass"

与:

<styleClass>
    <String fx:value="mainFxmlClass"/>
</styleClass> 

所以你的 FXML 会是这样的:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import java.net.*?>

<AnchorPane ...>
   <children>
         ...
   </children>
   <styleClass>
       <String fx:value="mainFxmlClass"/>
   </styleClass> 
   <stylesheets>
      <URL value="@cssstyle.css" />
   </stylesheets>
</AnchorPane> 

然后再试一次。

最后,如果它不起作用,请删除&lt;stylesheets&gt; 标签,并在您的场景中设置样式表文件:

Scene scene = new Scene(root);
scene.getStylesheets().add(getClass().getResource("cssstyle.css").toExternalForm());

所以你的 FXML 会是这样的:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>

<AnchorPane ...>
   <children>
         ...
   </children>
   <styleClass>
       <String fx:value="mainFxmlClass"/>
   </styleClass>
</AnchorPane> 

确实建议将 JavaFX 更新到较新的版本(2.2.45 是 Java 7 的最后一个版本),并从添加的许多新功能中受益。

【讨论】:

  • 如何在children里面写样式表?
  • 对不起,我的意思是在根子标签之后。我已经使用通用 FXML 文件编辑了我的问题。
  • 对不起@José Pereda,问题依然存在!!在 FXML 文件中工作正常,设计已更改,但仍在运行:Property "stylesheets" does not exist or is read-only. 在控制台中。
  • 请发布您的 FXML 文件,以便我们了解可能发生的情况以及您的 JDK 版本
  • 您是否再次清理并构建了项目?
猜你喜欢
  • 2017-05-30
  • 1970-01-01
  • 2015-05-10
  • 2015-03-14
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多