私は自分のプロジェクトでcontrolsfxを使用しています。デフォルトのバリデーションデコレーションを変更する正しい方法を見つけようとしましたので、デフォルトでCSSデコレータを使用しています。デフォルトのバリデーションデコレーションコントロールを変更する方法
私は自分のデコレータを作るために何の問題もない、といくつかのテキストフィールドを飾る、(私はCSSクラスを定義し、デコレータを作成し、それが動作します)
が、どのように私はそれを検証するためにCSSの装飾を使用していることを私のコードを変更することができますデフォルトで! 例コード:
ValidationSupport support = new ValidationSupport();
public void isMax(TextField tf, Boolean b){
Validator<String> validator = (control, value) -> {
boolean condition =
value != null
? !value
.matches(
"[\\x00-\\x20]*[+-]?(((((\\p{Digit}+)(\\.)?((\\p{Digit}+)?)([eE][+-]?(\\p{Digit}+))?)|(\\.((\\p{Digit}+))([eE][+-]?(\\p{Digit}+))?)|(((0[xX](\\p{XDigit}+)(\\.)?)|(0[xX](\\p{XDigit}+)?(\\.)(\\p{XDigit}+)))[pP][+-]?(\\p{Digit}+)))[fFdD]?))[\\x00-\\x20]*")
: value == null;
return ValidationResult.fromMessageIf(control,"not a number" ,Severity.ERROR , condition);
};
support.registerValidator(tf, b, validator);
}
それでは、変更することはので、私の検証ではなく、グラフィックのものCSSスタイルを使用しています。
作品上記のコード、およびテキストフィールドのグラフィック検証を提供し、しかし、次は動作しません:
public class MyValid extends StyleClassValidationDecoration {
ValidationSupport support = new ValidationSupport();
public void isMax(TextField tf, Boolean b){
// Decorator.addDecoration(tf,new StyleClassDecoration("warning"));
support.setValidationDecorator(new StyleClassValidationDecoration());
Validator<String> validator = (control, value) -> {
boolean condition =
value != null
? !value
.matches(
"[\\x00-\\x20]*[+-]?(((((\\p{Digit}+)(\\.)?((\\p{Digit}+)?)([eE][+-]?(\\p{Digit}+))?)|(\\.((\\p{Digit}+))([eE][+-]?(\\p{Digit}+))?)|(((0[xX](\\p{XDigit}+)(\\.)?)|(0[xX](\\p{XDigit}+)?(\\.)(\\p{XDigit}+)))[pP][+-]?(\\p{Digit}+)))[fFdD]?))[\\x00-\\x20]*")
: value == null;
return ValidationResult.fromMessageIf(control,"not a number" ,Severity.ERROR , condition);
};
support.registerValidator(tf, b, validator);
}
問題は、私はCSSクラスをcorespondingにstylevalidationを指すように知っているか、いけないことのいずれかを考えていますValidationResultを返す行に問題があります。
たとえば、このコード行:
Decorator.addDecoration(tf,new StyleClassDecoration("warning"));
は、フィールドを飾る、そしてスタイリング資源としての私のデフォルトの.cssファイルに「警告」クラスを使用しています。 StyleClassValidationDecorationでこれを行うにはどうしたらいいですか?
これは助けにはならない、あなたは再びグラフィック検証飾りを作っている:私は、標準的なグラフィックの検証を作成する方法を知っている、それが動作しますが、CSSの1は動作しません: – ImRaphael
あなたは延長できます - StyleClassValidationDecoration.javaを? –
はい、私はそれを少し明確にするために主要な質問を編集します。 – ImRaphael