[JFormattedTextField] Ja wie denn nun?

Status
Nicht offen für weitere Antworten.

SaschaLR

Bekanntes Mitglied
Hallo liebe Leute!

Ich bin verwirrt!

Ich habe hier schon ein wenig im Forum gesucht und gelesen und das hat die Verwirrung erst so richtig komplett gemacht!

Ich habe folgendes vor:

Ein TableCellEditor, der je nach dem in welcher Spalte editiert wird nur Integer, Date oder ebend String zulässt. Die pasende Komponente zurückzuliefern ist kein Poblem. Ich habe drei JFormattedTextField-Objekte und es wird immer das richtige als Editor geliefert. Ich habe auch schon erreicht, dass (mit Hifle vom KeyListener) die Vordergrundfarbe rot oder grün wird, wenn die Eingabe "invalid" oder "valid" ist. Alles prima!

Das Problem ist folgendes: In meiner jetzigen Version wird alles was mit einem int beginnt als valid angenommen wird und was mit einem nicht-int anfängt als invalid gilt. Also wird z.B. "1sdfasfasFWEF$§" als valid akzeptiert. Nicht gut.

Ähnliches gilt für das Datumsfeld. Dort wird z.B. folgendes akzeptiert: "19.11.102121" oder "19.14.1001" oder "11.11.2002ab" ... ihr seht das Problem? Als invalid wird es allerdings erkannt, wenn ich sowas versuche: "a.11.2005" ... also ganz ohne Funktion ist es auch wieder nicht.

Jetzt fragt sich der Leser bestimmt wie ich denn dem JFormattedTextField erkläre was es machen soll. Jedenfalls würde ich mich das fragen ;-)

Hier kommt die Verwirrung ins Spiel. Ich habe hier im Forum und bei Sun und sonstwo im Netz die unterschiedlichsten Methoden gesehen, die aber alle entweder garnicht oder ebend wie beschrieben arbeiten. Dazu zählen die folgenden:

Code:
JFormattedTextField jftf = new JFormattedTextfield(new SimpleDateFormat("dd.MM.yyyy"));

oder

Code:
JFormattedTextField jftf = new JFormattedTextfield();
jftf.setValue(new Date());

oder

Code:
JFormattedTextField jftf = new JFormattedTextfield(new DateFormatter(DateFormat.getDateInstance(DateFormat.SHORT, Locale.GERMAN)));

oder

Code:
JFormattedTextField jftf = new JFormattedTextfield(new MaskFormatter("##.##.####"));

Kann sein, das es noch mehr waren ... bin mit nicht 100% sicher. Den InputVerifier habe ich noch nicht getestet und die setDocument()-Geschichte ist auch ncoht nicht sooooo ganz das wahre.

Jedenfalls funktioniert nichts davon so richtig und ich bin mir auch nicht sicher, was das so alles den Unterschied machen soll.

An sich schien der MaskFormatter am Besten geeignet zu sein, aber da ist das Problem, dass ich ihn nicht dazu bringen konnte eine variable Menge von '#' zu akzeptieren, so dass zum Beispiel sowas rauskam: "123 " wenn die Maske "####" war.

Kann mir jemand sagen, wie ich das vrnünftig und möglichst simpel anstellen kann? Die Prüfung auf dd.MM.yyyy und auf Integer - ohne dass auch falsche Werte akzeptiert werden? Und zwar so, dass ich mit isValid() von JFormattedtTextField arbeiten kann. Also, dass man alles mögliche eingeben kann, es aber nur m richtigen Format als valid anerkannt wird... diese Arbeitsweise ist recht wichtig. Ich möchte also nicht unbedingt die Eingabe auf Ziffern beschränken.

Tut mir leid, wenn das schon oft gefragt wurde, aber ich komme mit den ganzen unterschiedlichen Ansätzen durcheinander und irgendwie halfen mir die gelesenen Beiträge auch nicht viel weiter.

Vielen Dank!

Gruß Sascha
 

SaschaLR

Bekanntes Mitglied
Hallo!

Ich hoffe, wenn ich das jetzt schreibe, dann halte ich niemanden von einer Antwort ab.

Ich habe mich entschieden JFormattedTextField (JFTF) abzuleiten und die isEditValid()-Methode zu überschreiben. Im Konstruktor übergebe ich einen int, der den Typ (Datum, Integer oder String) des JFTF festlegt. In der überschriebenen Methoden mache ich jetzt mit Hilfe von RegEx die nötige Prüfung.

Das ist zawr nicht so 100% toll, denke ich mal, aber es funktioniert perfekt und auf Anhieb!

Natürlich habe ich weiterhin noch Interesse an einer "vernünftigen" Lösung, nach der ich oben frage!!!

Gruß Sascha
 

Jörg

Bekanntes Mitglied
denke mal
Code:
DateFormat.setLenient(boolean);
könnte eins deiner probleme lösen ...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JFormattedTextField für kg und Währung AWT, Swing, JavaFX & SWT 6
S JFormattedTextField dezimal variabler Länge AWT, Swing, JavaFX & SWT 12
Ghostman1711 Java JFormattedTextfield MaskFormatter ohne Leerzeichen AWT, Swing, JavaFX & SWT 3
N Swing JFormattedTextField keine Werte nach Formatzuweisung AWT, Swing, JavaFX & SWT 0
M European Article Number (EAN) in JFormattedTextfield AWT, Swing, JavaFX & SWT 3
L JFormattedTextField AWT, Swing, JavaFX & SWT 3
B Swing JFormattedTextField AWT, Swing, JavaFX & SWT 4
Y JFormattedTextfield - Aktualisierung und Beschränkung AWT, Swing, JavaFX & SWT 4
V Swing Nullpointer Exception bei JFormattedTextField AWT, Swing, JavaFX & SWT 4
S Swing JFormattedTextField - bei nicht korrekter Eingabe Inhalt überschreiben AWT, Swing, JavaFX & SWT 5
S Swing JFormattedTextfield markiert nicht gesamten Inhalt AWT, Swing, JavaFX & SWT 4
C Swing Button in Textfeld (JFormattedTextField) AWT, Swing, JavaFX & SWT 7
A jformattedtextfield unsichtbar und wieder sichtbar machen AWT, Swing, JavaFX & SWT 13
C Swing JFormattedTextField + Eurobetrag AWT, Swing, JavaFX & SWT 2
E Problem mit MaskFormatter und JFormattedTextField AWT, Swing, JavaFX & SWT 3
A EventListener für JFormattedTextField AWT, Swing, JavaFX & SWT 6
B Swing Betrag mit Komma aus jformattedtextfield auslesen. AWT, Swing, JavaFX & SWT 2
E Swing JFormattedTextField Live Validierung AWT, Swing, JavaFX & SWT 4
C Swing Default Werte für JFormattedTextField und Eingaben zurücksetzen AWT, Swing, JavaFX & SWT 5
G JFormattedTextField und DefaultButton AWT, Swing, JavaFX & SWT 6
B Swing JFormattedTextField auf mehreren JPanels in einer JTabbedPane AWT, Swing, JavaFX & SWT 3
G JFormattedTextField values AWT, Swing, JavaFX & SWT 8
R JFormattedTextField AWT, Swing, JavaFX & SWT 8
D Eingabemaske im JFormattedTextField ändern AWT, Swing, JavaFX & SWT 3
D JFormattedTextfield um Grafik erweitern AWT, Swing, JavaFX & SWT 15
N JFormattedTextField erst Verlassen, wenn Eingabe korrekt AWT, Swing, JavaFX & SWT 6
G JFormattedTextField lässt sich nicht mehr leeren AWT, Swing, JavaFX & SWT 4
N PropertyChangeListener an JFormattedTextField AWT, Swing, JavaFX & SWT 7
D Problem mit JFormattedTextField AWT, Swing, JavaFX & SWT 6
A Problem mit JFormattedTextField auslesen AWT, Swing, JavaFX & SWT 11
S JFormattedTextField und maximal 3 Stellen. AWT, Swing, JavaFX & SWT 11
M JFormattedTextField und Null-Werte AWT, Swing, JavaFX & SWT 4
E JformattedTextField, Dialog und weitere Kleinigkeiten . AWT, Swing, JavaFX & SWT 2
E Problem mit Validierende Eingabefeldern JFormattedTextField AWT, Swing, JavaFX & SWT 8
B JFormattedTextField mit DecimalFormat in ein Double AWT, Swing, JavaFX & SWT 11
C JFormattedTextField - nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 3
H JFormattedTextField - Einen Preis eingeben lassen AWT, Swing, JavaFX & SWT 2
B Zeichen werden im JFormattedTextField überschrieben AWT, Swing, JavaFX & SWT 3
H JFormattedTextField AWT, Swing, JavaFX & SWT 4
W IP-Adresse mit JFormattedTextField AWT, Swing, JavaFX & SWT 5
F JFormattedTextField formatieren AWT, Swing, JavaFX & SWT 7
J [JFormattedTextField] Nur Zahlen eingebbar AWT, Swing, JavaFX & SWT 3
G Datumseingabe mit JFormattedTextField AWT, Swing, JavaFX & SWT 4
B Wert bei JFormattedTextField automatisch aktualisieren AWT, Swing, JavaFX & SWT 2
H Frage zu JFormattedTextField AWT, Swing, JavaFX & SWT 2
G Problem mit JFormattedTextField AWT, Swing, JavaFX & SWT 3
M Datumseingabe in ein JFormattedTextfield AWT, Swing, JavaFX & SWT 2
F Problem mit JFormattedTextField AWT, Swing, JavaFX & SWT 4
A JFormattedTextField - vertical misalignment problems... AWT, Swing, JavaFX & SWT 12
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
W Wie funktioniert denn das mit dem Tabbing? AWT, Swing, JavaFX & SWT 2
L Ja, was denn nun? AWT, Swing, JavaFX & SWT 9
E Wie wird denn swt installiert? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben