css - 如何在JavaFX元素中使用CSS文件?

标签 css javafx

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

/*
 * Empty Stylesheet file.
 */

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

我还在 FXML 文件Stylesheet 中写了 CSS 文件 的名称也在 Style Class:.mainFxmlClass。 所以我想知道错误请帮助我,谢谢 :)

最佳答案

你有两个问题:

第一个已经解决了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> 

再试一次。

最后,如果它不起作用,请删除 <stylesheets>标签,并在场景中设置样式表文件:

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 的最后一个版本),并从添加的许多新功能中受益。

关于css - 如何在JavaFX元素中使用CSS文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526892/

相关文章:

html - 如何控制导航栏中的链接边距和填充?

JavaFx 在 FXML 中包含自定义组件

javafx - 获取 java.lang.NoSuchMethodException : javafx. application.Platform.startup(java.lang.Runnable)

java - 如何访问 ScrollPane 的滚动条

javascript - 结合 Javascript + HTML 时删除自动添加的换行符

javascript - 保存用户的黑暗模式偏好的问题

java - 从场景中提取内容

java - 将字符串数组值与 JavaFX 组合框值进行比较,计算结果不为 true

html - 垂直对齐 anchor 内的文本

html - 每个 div 之间有 33% 的间距。是否可以压缩我的代码?