TextFeld und Zahlen

Kenan89

Bekanntes Mitglied
Hallo, ich habe viel über dieses Thema gelesen aber alle Lösungen hatten extends bei der Klasse.
Ich arbeite aber momentan ohne Vererbung. Deswegen die Frage:
Ich möchte, dass ein TextFeld nur Zahlen annimmt. Ich habe erfahren, dass es durch KeyListener unsicher ist, da man es mit Copy&Paste wohl umgehen kann. Dann habe ich über JFormattedTextField
gelesen und MaskFormatter(). Das ist wahrscheinlich die Lösung, aber wie sieht der Code aus?

Mein Code schaut so aus:

JFormattedTextField PLZ = new JFormattedTextField(5); //eine Postleitzahl
MaskFormatter PLZ = new MaskFormatter("######");

PLZ.setBounds(x,y,z,d);
usw ...

Dann sagt er mir als Fehler: Unhandled exception type ParseException. Ich muss wohl ein
try und catch block hinzufügen, aber wie soll der ausschauen?



Danke im voraus für die Antwort.
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
Ich arbeite aber momentan ohne Vererbung.
Und warum lernst du dann nicht mit Vererbung umzugehen ;) ? Abgesehen davon erbt jede deiner Klasse von [c]java.lang.Object[/c], du hast immer eine Vererbung.

Dann sagt er mir als Fehler: Unhandled exception type ParseException. Ich muss wohl ein
try und catch block hinzufügen, aber wie soll der ausschauen?
Java:
try {
    // dein Code
} catch (ParseException e) {
    // deine Fehlerbehandlung
}
 

Kenan89

Bekanntes Mitglied
try {
// dein Code
} catch (ParseException e) {
// deine Fehlerbehandlung
}

:) Das hatte ich nicht gemeint. Eher wie sich der try catch Block auf das Textfeld bezieht. Ich habe momentan diesen Pydocode im Kopf:

JFormattedTextField PLZ = new JFormattedTextField(5);
MastFormatter PLZ = new MastFormatter("#####");

if((PLZ.getInt())!=0){

try{
//keine Ahnung wie es in diesem Block ausschauen soll. Ich muss wohl den
Wert des Textfeldes nehmen und ihn in ein Integer versuchen zu verwandeln.
Falls es nicht klappt, wird der catch Block ausgeführt.
}
catch{
//Fehlermeldung, weil keine Zahl eingegeben
}

}
 
C

Camino

Gast
Ich möchte, dass ein TextFeld nur Zahlen annimmt.

Ich hab in meiner Anwendung auch mehrere Fälle, wo in Textfeldern nur bestimmte Werte (nur Zahlen, nur Buchstaben...) eingegeben werden sollen. Ich hab das mit einem DocumentFilter gelöst. Da kann man mit einem Pattern bestimmen, was in das Textfeld rein darf. Zum Beispiel auch die Anzahl der Zeichen. Und das ganze funktioniert schon während der Texteingabe.
 

Kenan89

Bekanntes Mitglied
Hallo nochmal,

irgendwie klappt es noch nicht so ganz mit dem Formatter.
So schaut mein bisheriger Code aus:
Java:
		MaskFormatter mf;
		try{
			mf = new MaskFormatter("#####");
		}
		catch(Exception e){
			JOptionPane.showMessageDialog(null, "Fehler", "Bitter nur 5-stellige Zahlen eingeben.", JOptionPane.ERROR_MESSAGE);
		}
		
		JFormattedTextField PLZ = new JFormattedTextField(mf);

Das mf in den Klammern bedeutet doch, dass der MaskFormatter auf das Textfeld PLZ angewendet wird?
 
I

irgendjemand

Gast
zur not nimmst du ein "normales" JTextField und setzt einfach ein eigenes PlainDocument ... in dem kannst du dann in insertString(int, String, AttributeSet) die eingabe auf gültigkeit prüfen ...
 

VfL_Freak

Top Contributor
Moin,

Das mf in den Klammern bedeutet doch, dass der MaskFormatter auf das Textfeld PLZ angewendet wird?

genau, aber das Try-Catch kannst Du Dir dort sparen, da die Eingabe ja erst im Textfeld erfolgt.

Also reicht auch sowas:
Java:
JFormattedTextField PLZ = new JFormattedTextField( new MaskFormatter("#####") );

Gruß
Klaus
 

Kenan89

Bekanntes Mitglied
wenn ich das try und catch block weglasse sagt er mir "unhandled ParseException"..
try catch muss wohl da sein. :D




EDIT: Es ist doch so: Ich brauche einen Listener, der überprüft, falls sich der Wert des TextFields geändert hat. Wenn ja wird eine Funktion aufgerufen, die den Inhalt des Feldes in eine Zahl umwandelt(try/catch), falls es klappt, wurden ziffern eingetragen, falls nicht logischerweise ungültige zahlen.
 
Zuletzt bearbeitet:
I

irgendjemand

Gast
also laut doc sollte dein code so stimmen ... aber einen listener brauchst du nicht ... der wird denke ich mal internet vom KeyListener der für die "eingabe" notwedig ist *sonst könntest du auf der tastatur rumhämmern aber es würde nie ein buchstabe auf dem screen erscheinen* gemacht ...

wie gesagt : leite dir was von PlainDocument ab und nutze ein normales JTextField dem du dann eine instanz deiner klasse übergibst ... geht meiner meinung nach genau so einfach als wenn du da mit nem Formatter rumspielst ... und es erfordert kein Exception-Handling
 

Kenan89

Bekanntes Mitglied
Java:
JFormattedTextField PLZ = null;
		
		
		try{
			PLZ = new JFormattedTextField(new MaskFormatter("#####"));
		}
		catch(ParseException pe){
			JOptionPane.showMessageDialog(null,  "Fehler", "Bitte nur 5-stellige Zahlen eintragen.", JOptionPane.ERROR_MESSAGE);
		}
		
		body.add(PLZ).setBounds(75, 115, 100, 20);

Damit funktioniert es. Ich bitte mal die Profis, einen Blick über diesen Codeschnipsel zu werfen und ihn zu verbessern, falls nötig. Zum Beispiel wird der catch Block nie ausgeführt. Man kann einfach keine Buchstaben eintippen. Man kann nicht mal mit STRG+V etwas einfügen. Rechtsklick geht auch nicht. Man kann lediglich Zahlen eintippen.
 
I

irgendjemand

Gast
DOC LESEN ! ... ich sags immer wieder ...

zitat
public MaskFormatter(String mask)
throws ParseException
Creates a MaskFormatter with the specified mask. A ParseException will be thrown if mask is an invalid mask.
Throws: ParseException - if mask does not contain valid mask characters

mal davon abgesehen das ein konstruktor auch nicht der ort sein wird wo ein fehler geworfen wird wenn eine falsch eingabe kommt ist das auch garnicht der grund für diese exception ...

diese exception wird vom konstruktor von MaskFormatter geworfen wenn du ihm eine ungültige Mask übergibst *wird intern bestimmt mit RegEx gemacht* ...

wenn du eine fehler-meldung haben willst wenn jemand versucht etwas ungültiges umzusetzen wirst du um ein Document *oder zumidnest einen entsprechenden Listener* nicht herum kommen ... da der MaskFormatter nichts anderes macht ... du allerdings dort keinen eingriff hast ...

ps : rechtsklick auf eine JComponent -> kontextmenü ? ... wäre mir neu ... zumindest gibt es sowas nicht ohne das man es programmiert hat ... außer vllt JTextField/JTextArea als standard-impl des OS *normales kontext-menü bei text-componenten halt* ...
 

Kenan89

Bekanntes Mitglied
So, mit regulären Ausdrücken ist es mir gelungen, nur Zahlen, beziehungsweise nur Buchstaben anzunehmen. Auch wenn mit Copy & Paste etwas eingefügt wird. Nun ist es aber so, dass nach dem Formatieren ein rechtsklick auf das Textfeld kein Menü erscheinen lässt. Wie kann ich es wieder einschalten?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
B Datentypen Textfeld auf Nicht-Zahlen überprüfen Java Basics - Anfänger-Themen 10
M Textfeld soll nur Zahlen erlauben Java Basics - Anfänger-Themen 26
R Textfeld und zahlen? Java Basics - Anfänger-Themen 4
L Nur ganzzahlige Zahlen im Textfeld Java Basics - Anfänger-Themen 3
G textfeld nur mit zahlen Java Basics - Anfänger-Themen 2
N in textfeld nur zahlen und punkl Java Basics - Anfänger-Themen 12
L Textfeld mit nur Zahlen? Java Basics - Anfänger-Themen 2
M Textfeld zurücksetzen Java Basics - Anfänger-Themen 3
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zeichen in einem Textfeld zählen und hinterlegen Java Basics - Anfänger-Themen 6
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M Wie kann ich im JAVA-GUI im Textfeld ein Array speichern Java Basics - Anfänger-Themen 4
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
E Wert in Textfeld schreiben Java Basics - Anfänger-Themen 1
E Anzahl Datensätze in Textfeld Java Basics - Anfänger-Themen 5
N Auf TextFeld aus anderer Klasse zugreifen ohne es zu übergeben Java Basics - Anfänger-Themen 3
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
B Wert aus TextFeld in Canvas benutzen Java Basics - Anfänger-Themen 0
P Textfeld auslesen Java Basics - Anfänger-Themen 4
S TextFieldFilter - Wenn Textfeld leer dann setze 0 Java Basics - Anfänger-Themen 9
W Textfeld auslesen und in Liste speichern Java Basics - Anfänger-Themen 11
D Leeres Textfeld nicht auslesen Java Basics - Anfänger-Themen 3
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J Problem mit String von Textfeld Java Basics - Anfänger-Themen 13
H Textfeld auslesen lassen Java Basics - Anfänger-Themen 11
N Textfeld- und Buttonerkennung einer Webseite Java Basics - Anfänger-Themen 6
M textfeld auslesen und in liste einlesen Java Basics - Anfänger-Themen 2
R GUI - Liste mit Textfeld und Radiobuttons Java Basics - Anfänger-Themen 8
C Buttons über Textfeld beschriften Java Basics - Anfänger-Themen 10
E Eingabemöglichkeiten für Textfeld begrenzen Java Basics - Anfänger-Themen 6
G String-Wert aus Textfeld auslesen Java Basics - Anfänger-Themen 9
D Canvas löschen über MouseEntered in Textfeld Java Basics - Anfänger-Themen 6
X Methoden [GWT] Dynamisches Textfeld PopUp erstellen Java Basics - Anfänger-Themen 6
F TextFeld überprüfen Java Basics - Anfänger-Themen 20
T text von textfeld auslesen und wieder reinschreiben Java Basics - Anfänger-Themen 10
T Erste Schritte Textfeld übernimmt Größe nicht Java Basics - Anfänger-Themen 11
Joew0815 Homepage Textfeld füllen und Button klicken Java Basics - Anfänger-Themen 10
B Textfeld aufpoppen lassen Java Basics - Anfänger-Themen 15
S Werte aus einem Textfeld lesen Java Basics - Anfänger-Themen 13
H Focus auf Textfeld in JOptionPane Java Basics - Anfänger-Themen 2
D Interpreter-Fehler NumberFormatException Textfeld Java Basics - Anfänger-Themen 24
C Mit Java Textfeld einer externen Anwendung auslesen Java Basics - Anfänger-Themen 9
J Textfeld für Taschenrechner Java Basics - Anfänger-Themen 3
U Drag&Drop von Tabelle in Textfeld Java Basics - Anfänger-Themen 3
M Inhalt Textfeld prüfen Java Basics - Anfänger-Themen 4
G Exception - Unvollständige Eingabe im Textfeld Java Basics - Anfänger-Themen 2
F Textfeld: String (x,xx) --> double Java Basics - Anfänger-Themen 8
F Text aus Textfeld1 in Textfeld 2 kopieren Java Basics - Anfänger-Themen 5
D Problem mit TextFeld Array Java Basics - Anfänger-Themen 18
R Textfeld "sperren", Text darf nicht eingegeben werden - wie realisierbar? Java Basics - Anfänger-Themen 2
I auf Textfeld aus anderer Klasse heraus zugreifen Java Basics - Anfänger-Themen 2
W OOP Datum aus Access in Textfeld schreiben ohne Stunden/Minuten/Sekunden Java Basics - Anfänger-Themen 2
J Escape taste geht ohne cursor im textfeld nicht. Java Basics - Anfänger-Themen 4
S Excel Textfeld auslesen Java Basics - Anfänger-Themen 6
1 Textfeld aktiv beim starten des Programms Java Basics - Anfänger-Themen 5
J double wert aus textfeld auslesen Java Basics - Anfänger-Themen 2
A Grafisches Textfeld zur Ausgabe Java Basics - Anfänger-Themen 3
H Textfeld Werte Java Basics - Anfänger-Themen 14
S Textfeld Wert auslesen Java Basics - Anfänger-Themen 2
A Mehrere verschieden Farben / Textfeld Java Basics - Anfänger-Themen 2
G Textfeld und Label in einem Tab? Anfänger braucht Hilfe Java Basics - Anfänger-Themen 3
E Textfeld aktualisieren Java Basics - Anfänger-Themen 3
L Textfeld Inhalt löschen Java Basics - Anfänger-Themen 2
G Exception bei leerem Textfeld Java Basics - Anfänger-Themen 12
Antoras Klasse in einem Textfeld zeichnen Java Basics - Anfänger-Themen 4
J Zahl in Textfeld hinzufügen Java Basics - Anfänger-Themen 10
P Tab in textfeld einfügen Java Basics - Anfänger-Themen 4
C Textfeld Eingabe überprüfen! Java Basics - Anfänger-Themen 12
B Textfeld auslesen Java Basics - Anfänger-Themen 5
R textfeld größe definieren Java Basics - Anfänger-Themen 2
C alle möglichen Datumseingaben im Textfeld abfangen Java Basics - Anfänger-Themen 12
A Ausgabe einer variablen im textfeld Java Basics - Anfänger-Themen 3
B Text per Button von ein textfeld in das andere? Java Basics - Anfänger-Themen 9
S voreingestellte zahl im textfeld Java Basics - Anfänger-Themen 2
H Text aus Textfeld per Actionlistener in Label ausgeben. Java Basics - Anfänger-Themen 6
V editierbares textfeld Java Basics - Anfänger-Themen 2
R Frage zur Länge von Textfeld und String Java Basics - Anfänger-Themen 4
A Ein TextFeld als mit Echtzeitausgabe? (Wie bei der Console) Java Basics - Anfänger-Themen 3
G Textfeld zweimal Auslesen - Probleme Java Basics - Anfänger-Themen 6
V Tastatur Abfrage im Lisener für eine Auswahl üder Textfeld Java Basics - Anfänger-Themen 8
G AWT-Textfeld zeichenanzahl begrentzen Java Basics - Anfänger-Themen 4
G Wie Text in Textfeld zentrieren? Java Basics - Anfänger-Themen 2
W Aus Textfeld ein "MySQL Date" auslesen Java Basics - Anfänger-Themen 2
I Was in Swing, was in AWT zeichnen & Textfeld formatierba Java Basics - Anfänger-Themen 4
G Ausgabe des Java Ergebnisses in Textfeld Java Basics - Anfänger-Themen 17
S Array im Textfeld ausgeben Java Basics - Anfänger-Themen 7
B Leeres Textfeld, was nun. Java Basics - Anfänger-Themen 4
G Textfeld in Frame geht nicht! :( Java Basics - Anfänger-Themen 3
B textfeld mit enter auslesen klappt nicht Java Basics - Anfänger-Themen 12
J Textfeld mit Eingabeprüfung Java Basics - Anfänger-Themen 10
Z Applet: Eingabe aus Textfeld auslesen und manipulieren Java Basics - Anfänger-Themen 3
N textfeld border . Java Basics - Anfänger-Themen 2
J Leeres Textfeld auslesen Java Basics - Anfänger-Themen 6
B Fokus auf ein Textfeld setzen? Wie? Java Basics - Anfänger-Themen 8
R GridBagLayout und JTextField: Textfeld ist viel zu schmal Java Basics - Anfänger-Themen 4
G Java Microedition TExtfeld in Variable einlesen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben