添加样式后如何重置回默认 css?
How to reset back to default css after adding style?
基本上我通过添加这样的样式 class 更改了 javafx 中文本字段的 css:
textfield.getStyleClass().add("textfieldstyle");
但我希望能够将它恢复到原来的样子。但由于本例中的原始外观是 JavaFX 的默认外观,所以我找不到文本字段的原始布局。我找到了 textfieldskin 属性 here,但它是一片丛林,我找不到任何关于 -fx-control-inner-background、-fx-text-box-border 和 -fx-focus 颜色的信息-颜色,这就是我想知道的。
我试过textfield.getStyleClass().remove("textfieldstyle");
并认为确实删除了新的 css,但它不会再次应用旧的。
感谢@UlukBiy 和@varren 的评论,我解决了这个问题。 System.out.println(textfield.getStyleClass());
非常有用,因为它允许我检查 类 默认应用于文本字段的样式。正如评论中指出的那样 text-input
和 text-field
.
因此,为了将文本字段的 css 恢复为默认值,我刚刚做了:
textfield.getStyleClass().clear();
textfield.getStyleClass().addAll("text-field", "text-input");
要在使用 .setStyle("css settings.....");
设置元素后重置元素的默认样式,您只需使用 -
textfield.setStyle(null);
我不确定这是否适用于使用 .getStyleClass().add("textfieldstyle");
应用 class 的元素,但如果不行,您可以执行类似 -
textfield.getStyleClass().clear();
textfield.setStyle(null);
以下测试代码适用于我在文本字段等控件中添加和删除 class:
import javafx.scene.control.TextInputControl;
public class test
{
protected void setEditable(final TextInputControl toControl, final boolean tlEditable)
{
toControl.setEditable(tlEditable);
if (tlEditable)
{
if (toControl.getStyleClass().contains("non-editable-class"))
{
toControl.getStyleClass().removeAll("non-editable-class");
}
}
else if (!toControl.getStyleClass().contains("non-editable-class"))
{
toControl.getStyleClass().add("non-editable-class");
}
}
}
使用 lambda 有效删除样式 class 即使在重复的情况下也是如此:
textfield.getStyleClass().removeIf(style -> style.equals("textfieldstyle"));
基本上我通过添加这样的样式 class 更改了 javafx 中文本字段的 css:
textfield.getStyleClass().add("textfieldstyle");
但我希望能够将它恢复到原来的样子。但由于本例中的原始外观是 JavaFX 的默认外观,所以我找不到文本字段的原始布局。我找到了 textfieldskin 属性 here,但它是一片丛林,我找不到任何关于 -fx-control-inner-background、-fx-text-box-border 和 -fx-focus 颜色的信息-颜色,这就是我想知道的。
我试过textfield.getStyleClass().remove("textfieldstyle");
并认为确实删除了新的 css,但它不会再次应用旧的。
感谢@UlukBiy 和@varren 的评论,我解决了这个问题。 System.out.println(textfield.getStyleClass());
非常有用,因为它允许我检查 类 默认应用于文本字段的样式。正如评论中指出的那样 text-input
和 text-field
.
因此,为了将文本字段的 css 恢复为默认值,我刚刚做了:
textfield.getStyleClass().clear();
textfield.getStyleClass().addAll("text-field", "text-input");
要在使用 .setStyle("css settings.....");
设置元素后重置元素的默认样式,您只需使用 -
textfield.setStyle(null);
我不确定这是否适用于使用 .getStyleClass().add("textfieldstyle");
应用 class 的元素,但如果不行,您可以执行类似 -
textfield.getStyleClass().clear();
textfield.setStyle(null);
以下测试代码适用于我在文本字段等控件中添加和删除 class:
import javafx.scene.control.TextInputControl;
public class test
{
protected void setEditable(final TextInputControl toControl, final boolean tlEditable)
{
toControl.setEditable(tlEditable);
if (tlEditable)
{
if (toControl.getStyleClass().contains("non-editable-class"))
{
toControl.getStyleClass().removeAll("non-editable-class");
}
}
else if (!toControl.getStyleClass().contains("non-editable-class"))
{
toControl.getStyleClass().add("non-editable-class");
}
}
}
使用 lambda 有效删除样式 class 即使在重复的情况下也是如此:
textfield.getStyleClass().removeIf(style -> style.equals("textfieldstyle"));