删除styleClass时applyCss不起作用

时间:2014-04-25 18:05:39

标签: css javafx textfield javafx-8

我有一个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();

1 个答案:

答案 0 :(得分:4)

这些错误的一个常见原因是您可能添加了&#34;无效字段&#34;风格类不止一次。 (请记住,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"));
}