我想将css文件链接到我的应用程序.
在我的fxml文件中,我使用:
在我的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文件的父节点,就像堆栈窗格一样
将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>