如何在FXML中添加CSS样式表

前端之家收集整理的这篇文章主要介绍了如何在FXML中添加CSS样式表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将css文件链接到我的应用程序.
在我的fxml文件中,我使用:
<stylesheets>
    <URL value="@../stylesheet1.css" />
  </stylesheets>

…当我在scenebuilder中打开fxml文件时,我可以看到样式预览.但是当我尝试运行应用程序时,我收到一个错误

java.net.MalformedURLException:无协议:../ styleles1.css

所以我用这种方式测试了它:

<stylesheets>
    <String fx:value="stylesheet1.css" />
</stylesheets>

现在它是另一回事 – 应用程序启动并应用css,但我没有在scenebuilder中看到预览.错误消息:

文件stylesheet1.css不存在.找不到资源stylesheet1.css.”

那么如何正确附加css文件呢?

好吧,虽然我的问题没有得到解答,但为什么它不能以上述方式工作,我发现了一个适合我的解决方案.在我的FXML中我只有这一行

<?scenebuilder-stylesheet ../stylesheet1.css?>

所以Scenebuilder适用于那个CSS.
在我的主类中,我以编程方式设置样式表:

Scene scene = new Scene(root);
String css = this.getClass().getResource("../stylesheet1.css").toExternalForm(); 
scene.getStylesheets().add(css);

解决方法

我找到了可用和有效的解决方案,在fxml中包含css文件
将stylesheets =“@ app / cssfilename.css”添加到fxml文件的父节点,就像堆栈窗格一样
<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="app.fxml.SettingsController" stylesheets="@app/cssfilepath.css">

......
.....
.....
</StackPane>

猜你在找的CSS相关文章