你有两个问题:
第一个已经解决了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 的最后一个版本),并从添加的许多新功能中受益。