Controlsfx CSS验证程序,成功状态

时间:2019-03-02 15:44:16

标签: css javafx controlsfx

我正在使用controlfx验证来验证某些文本字段,并且我有2个问题,它们实际上涉及同一主题,因此我将两者都放在这个问题中:

我注册验证器

 validator.setValidationDecorator(new StyleClassValidationDecoration("myErrorClass", "myWarningClass"));

,我确实对两个样式进行了样式设置,效果很好。当我选择错误验证器时,如果验证器不满意,则会显示失败的样式。这样,该部分就可以正常工作,并且当验证器满足时,该字段看起来“正常”,因此我还可以设置该默认外观的样式。  我希望有3个视觉表示阶段,但在应用程序一开始就应该对字段进行样式设置,以便向用户显示此字段是必需的,然后在文本字段状态更改时样式也应该更改,无论是成功样式还是错误样式。我不知道controlfx验证是否具有此功能,或者我是否必须使用伪类(以及如何做)。

enter image description here

我想要的是这张图片上的东西。

第二个问题是,该字段的末尾有那些标签(我圈了其中一个,红色圈了一个) 是否可以使用CSS javafx和文本字段来执行此操作,还是我必须使用文本流或其他一些第三方库?

我做了这样的事情,尽管我不知道它是否是最好的解决方案,但它仍然有效

CustomTextField ctf = new CustomTextField();
        support.setValidationDecorator(new StyleClassValidationDecoration("myErrorClass", "myWarningClass"));
        support.registerValidator(ctf, true, vald::checkContainsE);



        myLabel.setMinWidth(5);
        myLabel.setMinHeight(20);
        ctf.setRight(myLabel);
        support.invalidProperty().addListener((observable, oldValue, newValue) -> ctf.pseudoClassStateChanged(PseudoClass.getPseudoClass("negative"), oldValue));

       support.invalidProperty().addListener((observable, oldValue, newValue) ->  myLabel.pseudoClassStateChanged(PseudoClass.getPseudoClass("negative"), oldValue));

和CSS

.custom-text-field:negative{
-fx-background-color: lightblue;
}


#testlabel{
-fx-background-color: red;
}
#testlabel:negative{
-fx-background-color: green;
}

现在这确实有效,但是我想知道这样做的效率如何,是否可以将伪类分配给所有控件类型,例如所有Button类型或标签类型的伪类,还是我必须编写方法然后应用到我想要的所有按钮或标签上。

另一种选择是只扩展自定义文本字段并编写我自己的控件。

enter image description here

0 个答案:

没有答案