Probleme mit NumberFormat

Hallo,

ich hänge momentan an einem kleinen Problem und finde einfach keine Lösung. In einer Datenbank gibt es ein Feld Anschaffungswert. In diesem Feld können Beträge eingegeben werden und diese werden danach, sollten es gültige Eingaben sein, direkt als Währungszahl mit dementsprechender Formatierung angezeigt. Das funktioniert soweit, solange ich das Währungszeichen mit angebe.

Mein Code, mit dem ich das Format auf das Textfeld anwende, sieht bisher so aus:
Code:
// Initialize formats for formatted text fields
NumberFormat nf = NumberFormat.getCurrencyInstance();
NumberFormatter nff = new NumberFormatter(nf);
DefaultFormatterFactory currencyfactory = new DefaultFormatterFactory(nff);
tv_acquisitionvalue.setFormatterFactory(currencyfactory);
tv_acquisitionvalue.setFocusLostBehavior(JFormattedTextField.COMMIT_OR_REVERT);

Nun wurde gefragt, ob es möglich wäre, die Eingabe auch ohne das Währungszeichen gültig zu machen. Bisher verhält sich das Programm so:

  1. Im Feld steht der Wert 449,99 € (gültiger Wert)
  2. Ich möchte den Betrag korrigieren und trage 500 ein (ohne das €-Zeichen) und klicke auf ein anderes Feld/Button -> FocusLostBehavior sorgt dafür, dass bei ungültiger Eingabe der letzte gültige Wert wieder eingesetzt wird. Hätte ich 500 € eingetragen, würde das Programm es aktzeptieren und normal umwandeln.
Kriegt man das irgendwie hin, dass er hier die 500 auch ohne €-Zeichen korrekt in 500,00 wandelt?

Im Feld soll quasi am Schluss der korrekt formatierte Wert ohne das Währungszeichen stehen.
 

Robat

Top Contributor
Warum entscheidest du nicht einfach anhand des Wertes was für einen Formatter du nimmst. Wenn keine Währung angegeben wird, behandelst du den Text eben wie eine ganz normale Zahl und nimmst bspw. einen DecimalFormat. Oder du stellst sicher, dass die Währung immer angegeben wird (indem du bspw das € - Zeichen einfach anfügst wenn es nicht da ist).
 
Warum entscheidest du nicht einfach anhand des Wertes was für einen Formatter du nimmst. Wenn keine Währung angegeben wird, behandelst du den Text eben wie eine ganz normale Zahl und nimmst bspw. einen DecimalFormat. Oder du stellst sicher, dass die Währung immer angegeben wird (indem du bspw das € - Zeichen einfach anfügst wenn es nicht da ist).
Das mit dem DecimalFormat könnte ich mal testen. Das mit dem Nachtragen des €-Zeichens habe ich schon probiert gehabt, das hat leider (aus welchen Gründen auch immer) nicht funktioniert.
Leider habe ich den Codeschnipsel nicht mehr im Projekt wo ich das getestet hatte, aber im Prinzip hatte ich versucht, auf dem ActionListener des Save-Buttons zu prüfen, ob in der Textbox das €-Zeichen vorhanden war. Falls nicht, sollte es (BEVOR die eigentliche Savemethode durchgeführt wird) angefügt werden.
Das hatte ich versucht mit getValue und setValue sowie mit getText und setText, hat beides nichts gebracht.

EDIT: Mir ist gerade beim Schreiben eine Idee gekommen. Ich versuche mal, das Nachtragen des €-Zeichens auf den FocusListener der entsprechenden Textbox zu setzen, vielleicht funktioniert es so. Ich werde berichten. :)

@Testsubjekt_X Kannst Du noch mal 'etwas' verständlicher beschreiben was das Ziel wäre?
Das Feld um dass es geht wird beim Speichern auf einen gültigen Währungswert geprüft.

Beispiel:
In dem Feld steht 0,00 €. Trage ich in das Feld 523 € ein und klicke auf Speichern (bzw. ändere den Fokus auf ein anderes GUI Objekt), so wird der Wert automatisch in 523,00 € umgewandelt.
Trage ich jedoch 523 ein (ohne € Zeichen), und klicke auf Speichern, wird der Wert nicht als gültiger Währungswert angenommen und zurückgesetzt auf den letzten gültigen Wert (0,00 €).

Was ich möchte ist, dass die Eingabe ohne zusätzliches €-Zeichen trotzdem wie ein Währungswert behandelt wird. Hoffe das war verständlicher. :D
 
Erstmal vielen Dank für eure Hilfe und Tipps. Das mit dem FocusListener hat funktioniert... hätte ich auch mal vorher drauf kommen können.

EDIT: Ich nehme an, dass der FocusListener der Box vor dem FocusLostBehavior des Formatters ausgelöst wird und wiederum FocusLostBehavior vor dem ActionListener des Buttons, auf dem ich ursprünglich auf das €-Zeichen geprüft hatte. Deshalb hatte es gestern nicht funktioniert. Lasse mich da aber gerne belehren, falls es anders wäre.

Java:
tv_acquisitionvalue.addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {

    }

    @Override
    public void focusLost(FocusEvent e) {
        if (!tv_acquisitionvalue.getText().contains("€")) {
            tv_acquisitionvalue.setText(tv_acquisitionvalue.getText() + " €");
        }
    }
});

Euch noch ne gute Woche. :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
S Umstellung von File auf Path - Probleme mit Stream Allgemeine Java-Themen 5
C Probleme mit javax.mail.Session Allgemeine Java-Themen 8
M tomcat probleme Allgemeine Java-Themen 1
N Division macht Probleme Allgemeine Java-Themen 14
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
MarvinsDepression Probleme mit relativem Dateipfad Allgemeine Java-Themen 1
G Geotools Probleme nach PC-Wechsel Allgemeine Java-Themen 6
nibe1501 GUI Probleme Allgemeine Java-Themen 16
C Probleme mit dem WindowBuilder Allgemeine Java-Themen 3
P Selenium . Probleme ein Iron Icon Element anzusprechen Allgemeine Java-Themen 2
B Compiler-Fehler Probleme beim Kompilieren mit Jsoup Allgemeine Java-Themen 8
K VisualVM Profiling Remote Probleme Allgemeine Java-Themen 1
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
M Probleme bei Eclipse wenn ich entpacke Allgemeine Java-Themen 15
D Regex Probleme Allgemeine Java-Themen 2
M Probleme jar datei. Allgemeine Java-Themen 2
L Vererbung Verständnis Probleme Vererbung Allgemeine Java-Themen 2
Dann07 Probleme mit OpenAL Allgemeine Java-Themen 0
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
V Compiler-Fehler Online Compiler Probleme Allgemeine Java-Themen 4
M Probleme mit Negamax-Algorithmus Allgemeine Java-Themen 29
M Probleme mit BigDecimal Allgemeine Java-Themen 1
J Probleme exe-Start mit Task Scheduler Allgemeine Java-Themen 1
B Input/Output Probleme beim Ausführen von Shell-Befehlen mit Java Allgemeine Java-Themen 28
J Probleme beim einbinden von Zip4j library Allgemeine Java-Themen 6
F Variablen Palindromzahl (Probleme mit Methode) Allgemeine Java-Themen 9
K Data Konverter - Probleme mit Byte[] Kodierung Allgemeine Java-Themen 3
T Probleme mit dem Pfad zum Propertie file Allgemeine Java-Themen 7
H Swing HashMap zu Tabelle macht mir Probleme Allgemeine Java-Themen 4
Neoline Interpreter-Fehler Probleme mit Arrays.toString Allgemeine Java-Themen 7
F SQLite mit Java / Probleme beim INSERT Befehl Allgemeine Java-Themen 4
J Erste Schritte Probleme mit der Hauptklasse Allgemeine Java-Themen 14
J Tetris Probleme bei Klassen Allgemeine Java-Themen 14
J MinMax VierGewinnt Probleme Allgemeine Java-Themen 22
J Probleme mit CodeCoverage und Lombok Equals Allgemeine Java-Themen 1
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
R Snake Probleme Allgemeine Java-Themen 2
A Probleme beim Verstehen einer Aufgabenstellung Allgemeine Java-Themen 11
RalleYTN 3D Objekt Translation basierend auf Rotation (Probleme mit Z Rotation) Allgemeine Java-Themen 0
Bluedaishi Druck Probleme mit PDF dateien Allgemeine Java-Themen 4
G Ant Probleme bei einer Installation die Apache ant+ivy verwendet Allgemeine Java-Themen 14
E TableView Probleme Allgemeine Java-Themen 7
perlenfischer1984 Probleme beim Mocken Allgemeine Java-Themen 6
S Kaffemaschine Programmierung Probleme Allgemeine Java-Themen 2
K Threads Runtime und Process Probleme Allgemeine Java-Themen 3
S Probleme mit unterschiedlichen Java-Versionen (Mac OS X 10.11) Allgemeine Java-Themen 0
S Event Handling keyPressed()-Probleme Allgemeine Java-Themen 2
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
P Probleme mit Grafik (Java) Allgemeine Java-Themen 6
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
H Probleme mit DAY_OF_WEEK Allgemeine Java-Themen 4
Arif Probleme mit NullPointerException Allgemeine Java-Themen 2
E Probleme mit nextInt() und Exception Allgemeine Java-Themen 35
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
D Performance-Probleme mit Joda-Time Allgemeine Java-Themen 3
M Probleme beim rechnen, bei Zahlen mit führenden Nullen. Allgemeine Java-Themen 7
RalleYTN Probleme mit Encrypting Allgemeine Java-Themen 10
M Probleme mit Schriftarten PDFBox Allgemeine Java-Themen 3
J Probleme mit der Java-Runtime Allgemeine Java-Themen 10
G Probleme mit BufferedWriter und URL Allgemeine Java-Themen 4
S Probleme mit meinem MacBook Pro DRINGEND HILFE erbeten! Allgemeine Java-Themen 17
Androbin Interpreter-Fehler Probleme mit Rekursion - StackOverflowError Allgemeine Java-Themen 8
E JCuda-0.6.5 Probleme beim ausführen der Datei Allgemeine Java-Themen 0
M Runtime.exec() verursacht auf manchen Systemen Probleme - Ursache unklar Allgemeine Java-Themen 2
W JNDI - LDAP - Probleme beim editieren von Usern Allgemeine Java-Themen 0
R DBUnit Performance Probleme Allgemeine Java-Themen 0
S Probleme mit Collection Allgemeine Java-Themen 7
L Probleme mit Jar Allgemeine Java-Themen 6
N Zahlensysteme umrechnen; Probleme beim Umwandeln Allgemeine Java-Themen 4
K OOP OOP Gui Spiel + Vererbungen Probleme durch Nichtwissen!! Allgemeine Java-Themen 1
F Java Native/Shared Library (.so) laden macht Probleme Allgemeine Java-Themen 3
J Synchronized Probleme Allgemeine Java-Themen 7
J Java Progressbar & Download Probleme Allgemeine Java-Themen 10
S Probleme mit dem filechooser Allgemeine Java-Themen 1
J Comperator Probleme Allgemeine Java-Themen 4
A Probleme beim auslesen von Quelltext (HTML) Allgemeine Java-Themen 5
S Probleme mit Webappplikation Allgemeine Java-Themen 5
L Plötzlich Probleme mit der JVM :( Allgemeine Java-Themen 6
S starke performance probleme des forums Allgemeine Java-Themen 10
K Probleme bei Berechnung der Komplexität Allgemeine Java-Themen 7
R JRE Ablaufdatum seit 7u10 - Probleme bei selbst ausgelieferter JRE bekannt? Allgemeine Java-Themen 3
H Reg Exp Probleme Allgemeine Java-Themen 5
M Classpath Probleme bei JAR Generierung Allgemeine Java-Themen 2
S Probleme mit JAVA-Installation Allgemeine Java-Themen 3
D Probleme bei for-Schleife Allgemeine Java-Themen 4
R Probleme mit Javadoc Allgemeine Java-Themen 2
G Gson Probleme Allgemeine Java-Themen 2
P KI für TicTacToe programmieren > Probleme Allgemeine Java-Themen 2
M Google App Engine macht Probleme Allgemeine Java-Themen 4
H Probleme mit finally-Block und close() Allgemeine Java-Themen 4
F 2d array probleme Allgemeine Java-Themen 2
M 3D-Grafik Probleme beim drehen von Objekten Allgemeine Java-Themen 9
T Interface Probleme Allgemeine Java-Themen 8
C Eclipse Probleme bei selbst erstelltem Algorithmus Allgemeine Java-Themen 2
M Probleme mit String in Label übergeben. Allgemeine Java-Themen 6
H MediaManager Fragen/Probleme Allgemeine Java-Themen 6
U Probleme mit Kopiervorgang Allgemeine Java-Themen 3
S Probleme beim Auslesen einer Liste Allgemeine Java-Themen 8
S CardLayout Probleme (Zinsrechner) Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben