我有一个 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();
这些错误的一个常见原因是您可能不止一次添加了“无效字段”样式类。 (请记住,getStyleClass()
返回一个 List<String>
,而不是一个 Set<String>
。)所以你可能应该采取措施确保样式类只添加一次,或者在删除它时采取措施删除所有出现的地方。
我喜欢两者都做(我来自哪里,我们称之为“安全带和大括号方法”)。
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"));
}
我是一名优秀的程序员,十分优秀!