没有CSS的JavaFX组件样式

没有CSS的JavaFX组件样式,java,user-interface,styles,javafx,Java,User Interface,Styles,Javafx,有没有可能在没有CSS的情况下设计JavaFX组件的样式?我的意思是:我能达到没有CSS的CSS所能达到的效果吗?“没有CSS”是指“没有CSS字符串”(你放在setStyle(String)中的东西) 在我看来,通过创建新的样式字符串来更新样式是非常低效的。要在下面的样式中将背景颜色动态更改为白色(事先不知道),我必须用正则表达式或concate字符串替换它 -fx-background-color: red; -fx-border-color: black; -fx-border-width

有没有可能在没有CSS的情况下设计JavaFX组件的样式?我的意思是:我能达到没有CSS的CSS所能达到的效果吗?“没有CSS”是指“没有CSS字符串”(你放在
setStyle(String)
中的东西)

在我看来,通过创建新的样式字符串来更新样式是非常低效的。要在下面的样式中将背景颜色动态更改为白色(事先不知道),我必须用正则表达式或concate字符串替换它

-fx-background-color: red;
-fx-border-color: black;
-fx-border-width: 1;
我相信在内部,这些字符串将被解析为一些结构/对象,那么为什么这些结构不公开呢


我对JavaFX非常陌生。我知道我可以使用CSS继承,但它不是银弹,而且仍然会有一些字符串连接。

从JavaFX 2.2开始,样式的某些方面只能通过应用CSS来实现。区域背景颜色和边界信息的定义与您在问题中的定义相同n属于“只能通过css完成的事情”的范畴

您可以通过在css样式表中定义不同的样式类并操作节点的样式。这是使用css而不是使用该方法的推荐方法。您也可以更改应用于场景或节点层次结构的样式表列表。但是,这实际上只是以不同的方式使用css,而不是不使用css进行样式设置。

样式的某些方面可以在fxml或java代码中完成,因为它们在JavaFXAPI中公开。例如,您可以使用API或fxml字体属性在标签上设置字体,而不是使用css样式将字体应用于标签

在未来的JavaFX版本中(例如JavaFX8),其中许多东西还将有一个公共API,您可以使用它在代码中应用样式,而无需使用CSS。特别是对于JavaFX 8.0,已经定义了新的API,它公开了用于编程操作的区域背景和边框样式属性。请参阅。这将允许您以编程方式完成样式设置你在问题中提供了一个例子

此外,为未来的JavaFX版本提出了CSS信息的对象模型,以便除了当前基于字符串的setStyle和getStyleClass方法外,还可以通过正式的Java API查看和操作节点上的CSS属性。请参阅。如果您对此类功能感兴趣,请投票支持功能请求