schuetzejanett
Erfahrenes Mitglied
hallo,
habe in meinem SWT porg eine Combobox, in diese kann ich auch werte eingeben. Allerdings möchte ich die eingegebenen werte auch auf gültigkeit testen.
Dafür habe ich beides probiert einen verifylistener und einen modifyListener. Doch beides funktioniert nicht so wie ich will.
Denn sie testen nach Eingabe eines zeiches und nicht nach eingabe des ausdrucks, da ich den test auf gültigkeit mit text.matches(regex) ausführe kommt so erst 3-4 mal falsch eh ein richtig kommt. Und das obwohl der ausdruck richtig eingegeben wird. Außerdem werden die methoden auch schon beim füllen der combocox aufgerufen und sind selbst da manchmal falsch ob weohl nur richtige werte eingelesen werden hier. mal der code.
was kann ich machen das es funktioniert also das nach der eingabe mit dem regex getestet wird und wenn der wert nicht stimmt, das feld geleert wird oder der zuvor den focushabende wert wieder angezeigt wird?
habe in meinem SWT porg eine Combobox, in diese kann ich auch werte eingeben. Allerdings möchte ich die eingegebenen werte auch auf gültigkeit testen.
Dafür habe ich beides probiert einen verifylistener und einen modifyListener. Doch beides funktioniert nicht so wie ich will.
Denn sie testen nach Eingabe eines zeiches und nicht nach eingabe des ausdrucks, da ich den test auf gültigkeit mit text.matches(regex) ausführe kommt so erst 3-4 mal falsch eh ein richtig kommt. Und das obwohl der ausdruck richtig eingegeben wird. Außerdem werden die methoden auch schon beim füllen der combocox aufgerufen und sind selbst da manchmal falsch ob weohl nur richtige werte eingelesen werden hier. mal der code.
Java:
comboPostage.addModifyListener(new ModifyListener()
{
@Override
public void modifyText(ModifyEvent e)
{
System.out.println("jetzt: " + e.toString());
Combo text = (Combo) e.widget;
String value = text.getText();
if (!value.matches("\\d[\\,\\.]\\d{2}"))
{
System.out.println("passt nicht");
text.select(1);
}
}
});
comboPostage.addVerifyListener(new VerifyListener()
{
@Override
public void verifyText(VerifyEvent e)
{
if (!e.text.matches("\\d[\\,\\.]\\d{2}"))
{
e.doit = false;
System.out.println("passt nicht verify");
}
}
});
was kann ich machen das es funktioniert also das nach der eingabe mit dem regex getestet wird und wenn der wert nicht stimmt, das feld geleert wird oder der zuvor den focushabende wert wieder angezeigt wird?
Zuletzt bearbeitet von einem Moderator: