JTable Drag and Drop (DnD) --> Excel anderes Zahlenformat

ThirdKeeper

Mitglied
Hallöchen!

Habe einen JTable der mit unterschiedlichen primitiven Datentypen gefüllt ist (float, long,...).

In der Tablle werden die Zahlen richtig im deutschen Zahlenformat dargestellt (z.B. 1.004,25).
Übertrage ich diese jetzt per DnD zu Excel, werden '.' <-> ',' umgetauscht (z.B. zu 1,004.25).

Jemand eine Idee wo und was ich am JTable bearbeiten muss?
 
Ich denke das liegt an der Ländereinstellung die Excel da verwendet. Vermutlich holt sich Excel diese Information aus den Betriebssystemeinstellungen (wo auch immer die zu ändern sind, bin kein BS-Spezi).
 
Ich habe bemerkt, dass wenn ich mich im celleditmode innerhalb des JTables befinde (sprich doppelklick auf die Zelle), sind Komma und Punkt ebenfalls vertauscht.

Das Zahlenformat liegt also schon verdreht im Speicher.

Also müsste ich das Format spätestens zum Zeitpunkt des drops irgendwie ändern.
Doch welche Klasse ist dafür zuständig?
 
Ich glaube nicht dass es daran liegt.
Das was Du vom JTable siehst ist gewöhnlicherweise das, was der entsprechende CellRenderer ausgibt. Das was normalerweise dann ausgetauscht wird durch DnD in eine andere Applikation ist der tatsächliche Zahlenwert unabhängig seiner Darstellungsvariante.
. bzw , ist bei dem deutschen Zahlenformat genau andersherum als bei den Englischen. Mache doch mal den Versuch und zieh dir die Zahl in einen Texteditor und schaue mal nach was Du dann bekommst, würde mich echt interessieren.

Zahlenformate ebenso wie andere sprachliche Eigenschaftensind in Java in den Locals festgehalten.
Entweder wird bei dem Celleditmodus im CellEditor ein anderer Locale verwendet als im CellRenderer oder jemand hat da was zu Fuß gebastelt.
Schau doch mal in dem Tabellenmodell nach welcher Objekttyp (klasse) die Werte in der entsprechenden Zelle haben. Ich gehe davon aus dass es ein nummerischer- und kein Zeichenkettentyp ist (sonst hättest Du da auch nicht eine derartige Diskrepanz)
 
Hast Recht!
Der CellRenderer benutzt einen selbst programmierten Wrapper, der das Format zur Anzeige anpasst.

Was würdest Du empfehlen? Soll ich den Wrapper raus nehmen und durch ein
1.
Code:
...
     new DecimalFormat("#,##0.00##" 
....
und/oder durch
2.
Code:
...
     Local.German
...
anpassen? Und wenn ja, wo füge ich das dann am besten ein?
Im CellRenderer oder im JTable oder...
 
AFASK kannst Du an dem CellRenderer machen was Du magst. Ebenso ist der CellEditor nicht wirklich entscheident für Dein ursprüngliches Problem.

Ich würde einfach verscuhen das Betriebssystem auf Deutsch umzustellen, da offenbar auch java das anglikansiche Zahlenformat aus seinem DefaultLocal hernimmt.
Dem Renderer würde ich das Custom-Format einfach erstmal klauen, damit das Zahlenformat mit dem CellEditor hoffentlich identisch wird.

PS: mal eine Frage: wenn Du via DnD Deine Zahl in Excel schiebst erkennt Excel daraus gleich eine Zahl, oder ist es ein Stringfeld?
Was bekommst Du wenn Du einen normalen Text-Editor mit der Zahl aus dem JTable via DnD beglückst?
 
Also unter WinXP (ist übrigens auf deutsch gestellt):

Die Typen sind in Java: double, String, int

DnD zu...
Editor: funktioniert nicht
WordPad: 120.0 TextSpalte 1
Excel: 120.0 TextSpalte 1 <-- Formatierung ist auf "Standard" in den 3 Zellen

[Edit:] In Excel ist übrigens auch alles auf deutsch eingestellt.
Keine Ahnung was ich noch auf deutsch umstellen sollte.
 
Zuletzt bearbeitet:
Habe das Problem gelöst.

Der schon mals erwähnte Wrapper hat das Value-Object im englischen Format in das JTableModel gepackt und der CellRenderer hat es dann erst formatiert.

Problemlösung: Den Wert einfach schon formattiert ins Model schreiben. Und die Formattierung aus den CellRenderer nehmen.

@takidoso
Danke für Deine Hilfe, hast mir sehr bei der Problemlösung geholfen! :D
 

Neue Beiträge

Zurück