这是我的 JavaFX 代码片段:
<stylesheet value="colours.css" />
它位于 GridPane 对象内部,紧接着带有 GridPane 标签的行之后。
IntelliJ 说它无法编译符号“样式表”并且不允许使用值属性,当我尝试运行它时,我也收到一个很长的错误。
我尝试浏览 SO 并在线搜索(我不太擅长使用 javaFX),并将“样式表值”更改为其他内容几次(我不记得具体是什么),但实际上没有任何效果。
这是我的 JavaFX 代码片段:
<stylesheet value="colours.css" />
它位于 GridPane 对象内部,紧接着带有 GridPane 标签的行之后。
IntelliJ 说它无法编译符号“样式表”并且不允许使用值属性,当我尝试运行它时,我也收到一个很长的错误。
我尝试浏览 SO 并在线搜索(我不太擅长使用 javaFX),并将“样式表值”更改为其他内容几次(我不记得具体是什么),但实际上没有任何效果。
您尝试设置值的属性是名为(not )的“只读列表属性” 。
stylesheets
stylesheet
这意味着该属性映射到一个
Parent
名为 的方法(在类中定义)getStylesheets()
,该方法返回一个 ,List
并且没有匹配的setStylesheets()
方法。(这很合理,因为一个 FXML 元素可以有多个样式表。) 处理此问题的方法FXMLLoader
是将您为该属性指定的值添加到列表中。除了一些例外情况,通常没有必要为 property 元素提供属性。所以
<stylesheets value="..." />
在这里确实没有意义。您应该使用<stylesheets>location</stylesheets>
。在 FXML 中为 CSS 文件定义正确的位置可能有点棘手。您可以使用类似假设 CSS 文件与 FXML 文件位于同一包中。更多详情,请参阅位置解析文档。
请注意,您还可以将 CSS 指定为属性,而不是属性实例,这可能更容易: