【问题标题】:applyCss doesn't work when remove a styleClass删除 styleClass 时 applyCss 不起作用
【发布时间】:2014-04-25 18:05:39
【问题描述】:
我有一个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();
【问题讨论】:
标签:
css
javafx
textfield
javafx-8
【解决方案1】:
这些错误的一个常见原因是您可能多次添加了“invalid-field”样式类。 (请记住,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"));
}