SWT Text nur Zahlen

Polli

Mitglied
Hallo ihr lieben,

ich bis mal wieder, ich bin schon durchs Internet gesurft und habe versucht eine Loesung zu finden, aber irgendwie kam da nichts raus. Vielleicht koennt ihr mir ja helfen.
Ich hab eine Text Feld in welches ich aber NUR Zahlen eingeben moechte... Kann mir da jemand weiterhelfen?

Hier ein Code wieder sehr vereinfacht ;)

Code:
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;


public class TextNumeric 
{
	public static void main(String[] args) {
	   Display display = new Display();
	   Shell shell = new Shell(display);
	   shell.setLayout(new GridLayout(1, false));
	   shell.setSize(100,80);
	   
	   @SuppressWarnings("unused")
	   Text text = new Text(shell, SWT.BORDER);
	   
	   shell.open();
	   while (!shell.isDisposed()) {
		   if (!display.readAndDispatch()) {
			   display.sleep();
		   }
	   }
	   display.dispose();
	}
}

Danke fuer eure Hilfe!! :)
Liebste Gruesse, Polli.
 
Zuletzt bearbeitet:
jupps ich hab gesucht und nix gefunden, weil es mir speziell um die GUI programmierung mit SWT geht nicht mit SWING oder AWT und bei SWT nutze ich leider nicht das JTextField, damit bekomm ich das auch hin ;)

Sorry MiMi leider hilft mir dein Eintrag nicht weiter :(
Dennoch herzlichen Dank!
 
mhh... das zweite ist nicht ganz das was ich suche, aber das erste hilft mir ein bisschen weiter, auf der Seite bin ich zwar immer unterwegs, aber irgendwann wird man scheinbar echt Betriebsblind...
Danke erstmal, wenns klappt sag ich nochmal bescheid, falls nicht auch ;)
 
mhh... es hilft mir aufjeden Fall schon weiter, aber weiss jemand wie man es machen kann, dass zum beispiel nur Zahlen zugelassen werden?
Das zB automatisch Buchstaben geloescht werden...
Das ist eigendlich was ich mir so vorgestellt habe... ob es machbar ist :confused:... Waer nett wenn das jemand weiss...

liebe Gruesse!
 
In deinem Listener könntest du z.B. sowas machen:

Java:
public void verifyText(VerifyEvent e) {
	String text = e.text;
        //Alles was keine Zahl ist durch Nichts ersetzen
	text = text.replaceAll("[^0-9]", "");
	e.text = text;
}
 
zu zejas Lösung:

VerfiyEvent hat ausserdem eine variable event.doit. setzt du diese auf false wird der event nicht ausgeführt... zum beispiel so:
Java:
    inputField.addVerifyListener(new VerifyListener(){
	   	@Override
		public void verifyText(VerifyEvent event) {
	        char[] charArray = event.text.toCharArray();
	        for (char testChar : charArray) {
	        	if (testChar <= '0' || testChar >= '9') {
	        		event.doit = false;
	        		return;
	        	}
	        }
	   	}
	});

Das ist gerade bei komplexerem parsen sehr praktisch (oder wenn man wenig Plan von regex hat)

Gruss
.bile
 
Naja, der listener wird auch in meinem 2. Link mit dem event.doit verwendet
Java:
    text.addVerifyListener(new VerifyListener() {
      public void verifyText(VerifyEvent e) {
        if(e.end == e.start) {
          if( e.character == ' ' && (e.stateMask & SWT.CTRL) != 0 ) {
            if(text.getText(e.end-1, e.end-1).equals("V")) {
              e.text = "erifyListener";
            }else{
              e.doit = false;
            }
          }
        }
      }
Aber das war ja anscheinend net was er sucht ^^
 

Neue Beiträge

Zurück