2017-03-24 1 views
0

J'utilise controlsfx dans mon projet, et j'ai essayé de trouver le bon moyen de changer les décorations de validateur par défaut, donc au lieu de graphique qu'il utilise CSS décorateur par défaut, mais je n'avais aucun accès.Comment changer la valeur par défaut Validator Decoration controlsfx

Je n'ai rien à faire mon propre décorateur, et décorez un champ de texte, (i définir la classe css, créez décorateur et il fonctionne)

mais comment puis-je modifier mon code qui utilise la décoration CSS pour la validation par défaut! Code Exemple:

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); 

    } 

Alors, que changer si ma validation utilise un style CSS à la place les graphiques.

Le code ci-dessus fonctionne et fournit la validation graphique du champ de texte, mais les suivantes ne fonctionne pas:

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); 

    } 

Le problème est que je pense soit que je ne sais pas au point stylevalidation pour lui correspondant classes CSS ou le problème est dans la ligne qui renvoie ValidationResult.

Par exemple cette ligne de code:

Decorator.addDecoration(tf,new StyleClassDecoration("warning")); 

décore le terrain, et en tant que ressources de style utilise la classe « d'avertissement » dans le fichier de mon défaut. Comment puis-je faire cela pour StyleClassValidationDecoration?

Répondre

1

Retravailler pour montrer comment utiliser StyleClassValidtionDecoration.

Dans ControlsFX si vous utilisez CSS - vous pouvez simplement fournir à StyleClassValidationDecoration les classes CSS que vous souhaitez utiliser.

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

Cela ne fonctionne pas, vous faites à nouveau la décoration de validation graphique: je sais comment créer la validation graphique standard, et il fonctionne, mais css ne fonctionne pas: – ImRaphael

+0

Pouvez-vous étendre - StyleClassValidationDecoration.java? –

+0

oui je peux, je vais éditer la question principale pour le rendre un peu plus clair. – ImRaphael