Utilisation de l'éditeur NetBeans GUI, comment puis-je créer un champ JTextField ou JFormattedText qui doit être validée par rapport à une expression régulière?

StackOverflow https://stackoverflow.com/questions/1378978

Question

J'ai une expression régulière (\d{4}\w{3}(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]){2}) que je dois valider l'entrée d'un champ de texte contre lorsque l'utilisateur clique sur le bouton OK ou déplace le curseur sur un autre champ. Que je sais comment faire, écrire le code. Cependant, je suis intéressé s'il est possible d'avoir l'éditeur de GUI NetBeans faire une partie du travail pour moi, d'autant plus que je me déplace loin de Eclipse et vers NetBeans comme mon IDE de choix, et je voudrais tirer pleinement parti des outils qu'il fournit.

Était-ce utile?

La solution

Ouvrez les propriétés de votre JTextField, dans le regard de l'onglet Propriétés inputVerifier. Ouvrez

vous est demandé de présenter le code InputVerifier.

ftf2.setInputVerifier(new InputVerifier() {
  public boolean verifyText(String textToVerify) {
     Pattern p = Pattern.compile("your regexp");
     Matcher m = p.matcher(textToVerify);
        if (m.matches()) {
        setComponentValue(textToVerify);
        return true;
    }
    else {
        return false;
    }

  }
});

Je n'ai pas compilé ce code, donc pourrait contenir des erreurs. Mais je pense que vous avez l'idée;)

Autres conseils

Ce n'est pas la solution la plus simple, mais il est très puissant: essayez printemps riche client, où la validation pourrait être atteint via:

public class Validation extends DefaultRulesSource {

private Constraint NAME_VALIDATION = all(new Constraint[]{minLength(3), required()});

public void load() {
    addRules(new Rules(Person.class) {

        @Override
        protected void initRules() {
            add("name", NAME_VALIDATION);
        }
    });

...

et la forme est facilement créé IUG via:

    TableFormBuilder formBuilder = getFormBuilder();
    formBuilder.add("firstName");
    formBuilder.add("name");
    formBuilder.row();

par exemple. ici pour la validation ou ici pour plus d'infos . J'utilise ce dans mon projet open source ...

De cette façon, vous pouvez créer un composant swing plus général qui pourrait être ajouté aux NetBeans palette de composants

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top