是否可以在没有CSS的情况下样式JAVAFX组件?我的意思是:如果没有CSS,我可以实现同样的能力吗?由"没有CSS"我的意思是"无CSS字符串"(您放入setStyle(String)
的东西。
通过创建新样式字符串来更新样式对我来说似乎很低。要以下面的样式将背景颜色动态更改为白色(未知),我必须用Regex或contrings替换。
-fx-background-color: red;
-fx-border-color: black;
-fx-border-width: 1;
我相信,无论如何,这些字符串将被解析为某些结构/对象,所以这些结构不暴露?
我是Javafx的新手。我知道我可以使用CSS继承,但不是银弹,仍然会有一些字符串串联。
从Javafx 2.2开始,风格的某些方面只能通过使用CSS来完成。您在问题中所拥有的区域背景颜色和边框信息的定义属于"只能通过CSS完成的事情"类别。
您可以通过在CSS样式表中定义不同的样式类并操纵节点的样式类别来进行样式。这是使用CSS而不是使用SetStyle方法的推荐方法。您还可以更改应用于场景或节点层次结构的样式表的列表。但是,这实际上只是以不同的方式使用CSS,而不是没有CSS的样式。
样式的某些方面可以在FXML或Java代码中完成,因为它们可以在Javafx API中展示,例如,您可以使用SetFont API或FXML Font属性在标签上设置字体,而不是使用CSS样式-FX -FONT将字体应用于标签。
在将来的Javafx版本(例如Javafx 8)中,其中许多内容还将具有公共API,您可以在不使用CSS的情况下将其用于代码中的样式。特别是对于Javafx 8.0,已经定义了新的API,该API暴露了区域背景和边框样式属性以进行程序化操作。参见RT-24506:有关区域背景和边界的公共API。这应该使您可以通过编程方式完成您在问题中提供的示例的样式。
此外,为将来的Javafx版本提出的是CSS信息的对象模型,因此除了当前基于字符串的SetStyle和GetStyleclass方法外,还可以通过正式Java API查看和操纵节点上的CSS属性。参见RT-17293:Java中的CSS样式对象模型。如果您对此类功能感兴趣,请投票选出功能请求。