我有一个TextField
样式,当它的值有效/无效时更改styleClass
,但是存在很大问题。当值变为有效时,我仍然应该再次更改TextField
以使styleClass
得到应用。我刚刚尝试使用applyCss()
方法,但它不起作用:(。
if(!valid){
field.getStyleClass().add("invalid-field");//Works excellent
} else {
field.getStyleClass().remove("invalid-field");//Doesn't work up to the time textProperty doesn't change once again
field.applyCss();
答案 0 :(得分:4)
这些错误的一个常见原因是您可能添加了"无效字段"风格类不止一次。 (请记住,getStyleClass()
会返回List<String>
,而不是Set<String>
。)因此,您应该采取措施确保样式类仅添加一次,或采取措施删除所有实例你把它删除了。
我喜欢这两种方式(我来自哪里,我们称之为&#34;腰带和牙套方法&#34;)。
ObservableList<String> styleClasses = field.getStyleClass();
if(!valid)
if( ! styleClass.contains("invalid-field")){
styleClass.add("invalid-field");
}
} else {
// remove all occurrences:
styleClass.removeAll(Collections.singleton("invalid-field"));
}