Mit Hilfe des NetBeans GUI-Editor, wie kann ich ein JTextField oder JFormattedText Feld erstellen, die gegen einen regulären Ausdruck validiert werden muss?

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

Frage

Ich habe einen regulären Ausdruck (\d{4}\w{3}(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]){2}), dass ich die Eingabe eines Textfeldes zu validieren gegen, wenn der Benutzer klickt auf die Schaltfläche OK oder bewegt den Cursor in ein anderes Feld. Dass ich weiß, wie zu tun, den Code zu schreiben. Aber mich interessieren, ob es möglich die NetBeans GUI-Editor einige tun für mich der Arbeit haben, zumal ich von Eclipse-bin weg und hin zu NetBeans als meine IDE der Wahl, und ich möchte voll nutzen der Werkzeuge, die es bietet.

War es hilfreich?

Lösung

Öffnen Sie die Eigenschaften Ihres JTextField, in der Registerkarte Eigenschaften sucht InputVerifier. Öffnen Sie es

Sie werden nun aufgefordert, den InputVerifier Code einzuführen.

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

  }
});

Ich habe diesen Code nicht kompiliert, so Fehler enthalten könnten. Aber ich denke, Sie bekommen die Idee;)

Andere Tipps

Dies ist nicht die einfachste Lösung, aber es ist ein sehr mächtiges ein: versuchen Frühjahr Rich-Client-, wo die Validierung über erreicht werden:

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

...

und die gui Form ist einfach erstellt über:

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

z. schauen hier für die Validierung oder hier für mehr Infos . Ich bin mit diesem erfolgreich in meinem Open-Source-Projekt ...

So kann man eine allgemeinere Swing-Komponente erstellen können, die auf der Seite Netbeans Komponentenpalette

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top