2017-03-24 11 views
0

私は自分のプロジェクトで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でこれを行うにはどうしたらいいですか?

答えて

1

StyleClassValidtionDecorationの使用方法を示すための再作成。

CSSを使用している場合ControlsFXでは、使用するCSSクラスをStyleClassValidationDecorationに指定するだけで済みます。

ValidationSupport validator = new ValidationSupport(); 
    validator.setValidationDecorator(new StyleClassValidationDecoration("myErrorClass", "myWarningClass")); 
    validator.registerValidator(fieldToValidate, false, this::myValidationForField); 
+0

これは助けにはならない、あなたは再びグラフィック検証飾りを作っている:私は、標準的なグラフィックの検証を作成する方法を知っている、それが動作しますが、CSSの1は動作しません: – ImRaphael

+0

あなたは延長できます - StyleClassValidationDecoration.javaを? –

+0

はい、私はそれを少し明確にするために主要な質問を編集します。 – ImRaphael

関連する問題