我刚刚开始使用最新的Java7 SDK在IntelliJ中构建JavaFX应用程序。
我使用Oracle Scene Builder构建了我的界面,所有内容都在预览中运行并显示正常,但是当我尝试编译程序时,我收到以下错误
`Property "stylesheets" does not exist or is read-only`
根据JavaFX文档判断我的FXML中的行stylesheets="@MainView.css"
似乎无效。
有人知道我为什么会收到这个错误吗? (如果我删除样式表的链接,我的程序编译得很好,所以问题仅在于样式表,我很难过!)
答案 0 :(得分:6)
您在Scene Builder 2中创建了一个FXML并在JDK 7中运行.SB 2"尝试"创建Java 8兼容的FXML代码。修复FXML:
stylesheets="@MainView.css"
属性<?import java.net.*?>
在</children>
后面的父窗格末尾添加以下代码(在我的情况下,它位于</AnchorPane>
之前):
<stylesheets>
<URL value="@MainView.css" />
</stylesheets>
答案 1 :(得分:4)
事实证明我需要在start()方法中手动链接样式表,因为JavaFX7不支持样式表标记。
为了解决这个问题,我在Start()方法中调用了以下命令
root.getStylesheets().add(this.getClass().getResource("view/MainView.css").toExternalForm());
root
是我的FXMLLoader的名称。
答案 2 :(得分:2)
当我尝试在程序中设置自己的CSS属性时,我遇到了同样的错误。如果你不这样做,你可能正在使用一些使用JavaFX 8中引入的CSS library的类。
尝试将JDK更新为最新发布的版本here。
如果这仍然不起作用,那么应用程序中某处的CSS文件无法正确读取。可能有一些类错误地映射了JavaFX bean属性。
答案 3 :(得分:0)
打开Scene Builder时出现此错误。
安装jdk1.8,将其设置为我的系统默认值(在/ usr / lib / jvm / default-java中)并修改我的$ PATH,其中没有一个似乎有帮助。
然后将Scene Builder从1.1更新到2.0,将1.1二进制文件链接到2.0版本(see this question),最后在Netbeans中设置新的Scene Builder路径 - &gt;工具 - &gt;选项 - &gt; Java - &gt; JavaFX解决了这个问题。更新默认的jdk版本可能与此有关,也可能没有。
项目本身已经使用了jdk1.8,我没有遇到麻烦;我只在Scene Builder中打开它们时遇到了问题(在问题标题中提到了错误)。