基本上我通过添加这样的样式类来改变javafx中文本字段的css:
textfield.getStyleClass().add("textfieldstyle");
Run Code Online (Sandbox Code Playgroud)
但后来我希望能够将它恢复到原来的样子.但由于在这种情况下的原始外观是JavaFX的默认外观,我找不到文本字段的原始布局.我在这里找到了textfieldskin属性,但它是丛林,我找不到关于-fx-control-inner-background,-fx-text-box-border和-fx-focus-color的颜色,是我想知道的.
我已经尝试textfield.getStyleClass().remove("textfieldstyle");并认为这确实删除了新的CSS,但它不再适用旧的css.
要在使用设置后重置元素的默认样式,.setStyle("css settings.....");只需使用 -
textfield.setStyle(null);
Run Code Online (Sandbox Code Playgroud)
我不确定这对于一个已经使用了类的元素是否可行,.getStyleClass().add("textfieldstyle");但如果没有,你可以做类似的事情 -
textfield.getStyleClass().clear();
textfield.setStyle(null);
Run Code Online (Sandbox Code Playgroud)
感谢@UlukBiy和@varren的评论,我解决了这个问题.System.out.println(textfield.getStyleClass());因为它允许我检查默认情况下在文本字段上应用了哪些样式类,所以它非常有用.而且,因为它指出在评论中那些text-input和text-field.
因此,要将文本字段的css恢复为其默认值,我刚刚执行了以下操作:
textfield.getStyleClass().clear();
textfield.getStyleClass().addAll("text-field", "text-input");
Run Code Online (Sandbox Code Playgroud)
小智 7
即使在重复的情况下,也可以使用 lambda 有效地删除样式类的简短方法:
textfield.getStyleClass().removeIf(style -> style.equals("textfieldstyle"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14291 次 |
| 最近记录: |