KeyListener e - > Quelle bekommen

Slacki

Mitglied
Morgen zusammen :)

kurze Frage:

Ich versuche rauszufinden ob der Inhalt eines JTextField nur Int oder Double enthält (im Moment der eingabe). Und falls nein den Alten wert beibehalten (e.consume).
Ich weiss nur nicht mehr wich ich an den AKTUELLEN Wert komme.
Das ging doch irgendwie mit

JTextField jtf = (JTextField)e.getSource.getClass() ?

e ist ein KeyListener.

besten Dank
Manuel
 
Hi,
so wie ich dich verstehe, willst du an den Text des Parents kommen. Das geht so:
Java:
//für den Text
String text = ((JTextField)e.getSource).getText();
//für die Box
JTextField jtf = (JTextField)e.getSource();

Ciao
DosCoder
 
Perfekt, vielen Dank !

//Damit bekomme ich den ALTEN Text
String text = ((JTextField)e.getSource()).getText();

und wie komme ich an den AKTUELLEN (also der, der erst durch KeyEvent gesetzt wird)
Ich möchte ALT und NEU miteinander vergleichen.

lg
Manuel
 
Zuletzt bearbeitet:
Hi,
über dem selben Problem brütete ich erst vor ein paar Tagen:
Benutze einfach die keyReleased()-Methode statt der keyPressed-Methode.
Der Unterschied zwischen beiden ist, dass keyPressed() beim drücken der Taste aufgerufen wird und keyReleased() wenn die Taste losgelassen wurde.

Ciao
DosCoder
 
Zuletzt bearbeitet:
Hallo DosCoder,

mir ist der Unterschied nicht ganz klar.....
Auch bei Key Released liefert der Code die gleichen Werte...

Code:
jTextField21.getText();

und

Code:
((JTextField)e.getSource()).getText();

liefert die gleichen Werte (AKTUELLER Wert).
Nach der Überprüfung der Eingabe kann ich also immer noch nicht den
ALTEN wert wieder herstellen.

lg
Manuel
 
Hi,
@all merkwürdig. Mir wurde das so beigebracht, dass keyRealeased beim loslassen der Taste aufgerufen wird, habe aber gerade herausgefunden, dass sie auch bei Gedrückthalten der Taste aufgerufen wird, also falls hier jemand weiß warum das so ist, mich würds interessieren.
@Slacki Nun zu deinem Problem, wenn du den neuen mit dem alten Wert vergleichen willst, dann musst du natürlich beide Methoden verwenden, denn trotz des obigen Problems werden beide Methoden abwechselnd aufgerufen.
Java:
//Zum Vergleichen wäre es sinnvoller, die Strings als Membervariablen zu deklarieren.:-)
@Override public void keyPressed(...){
    String alterWert = e.get.....;
}
@Override public void keyReleased(...){
    String neuerWert = e.get....;
}
Sorry, war zum Teil auch mein Fehler.
Ciao
DosCoder
 
Hallo zusammen,

den Inhalt eines JTextField kontrollieren geht am besten über das javax.swing.text.Document Interface. Die insertString-Methode führt die Kontrolle aus.
(http://java.sun.com/javase/6/docs/api/index.html)
Am einfachsten erstellt mann seine eigene Document Klasse als abgeleitete Klasse von javax.swing.text.PlainDocument, und überschreibt die insertString-Methode.

Nicht so ganz einfach, aber zielgerichtet.
 
Hi,
wie man mit dem Document verschiedene Eingaben unterbindet wusste ich, aber wie kommt man an den aktuellen Text? Die Klasse PlainDocument hat zwar eine Methode names getText(), aber die verlangt ja eine Länge. Würde mich freuen, wenn mir jemand das erklären könnte.
Ciao
DosCoder
 
Hallo,

zwei Fragen:
1. braucht man noch den alten Wert wenn das JTextField nur korrekte Werte beinhalten kann?
2. ist das JTextField verantwortlich für den alten Wert?

PlainDocument hat ein Content Objekt, und Content hat eine getString-Methode.
So kann man an den aktuellen Text herankommen.
 
Danke für deine Antwort.

Und zu deinen Fragen:
Nein, man braucht den alten Text nicht, aber da Slacki mit den KeyListenern angefangen hat, habe ich ihm Antworten ebenfalls mit KeyListenern gegeben.
Ciao
DosCoder
 

Neue Beiträge

Zurück