Hi,
Ich habe Beispiel-Code angehaengt der zeigt was falsch laeuft. Wenn ich eine Englische Locale setze ist alles ok. Bei der Deutschen Locale habe ich jedoch Probleme bei der Eingabe von Zahlen wenn ich das Dezimal-Komma nutzen will.
Angezeigt werden die Zahlen in der Tabelle richtig: 1,23 (1 Dezimalkomma 23).
Wenn ich jedoch nun eine neue Zahl eingeben will und tippe: 12,34 dann kann die JTable diese Kommazahl nicht interpretieren und umrandet die Zelle mit einem roten Rand der mir sagt, dass ich was falsch eingegeben habe.
Trotz Deutscher Locale muss ich zur Zahleneingabe anstatt dem Dezimalkomma den englischen Dezimalpunkt verwenden damit JTable die Eingabe erlaubt.
Kann ich dieses Verhalten irgendwie reparieren?
Vielen Dank,
sb
Ich habe Beispiel-Code angehaengt der zeigt was falsch laeuft. Wenn ich eine Englische Locale setze ist alles ok. Bei der Deutschen Locale habe ich jedoch Probleme bei der Eingabe von Zahlen wenn ich das Dezimal-Komma nutzen will.
Angezeigt werden die Zahlen in der Tabelle richtig: 1,23 (1 Dezimalkomma 23).
Wenn ich jedoch nun eine neue Zahl eingeben will und tippe: 12,34 dann kann die JTable diese Kommazahl nicht interpretieren und umrandet die Zelle mit einem roten Rand der mir sagt, dass ich was falsch eingegeben habe.
Trotz Deutscher Locale muss ich zur Zahleneingabe anstatt dem Dezimalkomma den englischen Dezimalpunkt verwenden damit JTable die Eingabe erlaubt.
Kann ich dieses Verhalten irgendwie reparieren?
Vielen Dank,
sb
Java:
public class TableFormatErrorTest2 {
public static void main(String[] args) {
Locale.setDefault(Locale.GERMANY);
showInFrame(getClassicPanel());
}
private static void showInFrame(JComponent comp) {
JFrame frame = new JFrame("Test");
frame.setContentPane(comp);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(800, 600));
frame.pack();
frame.setVisible(true);
}
private static JComponent getClassicPanel() {
DefaultTableModel model = new DefaultTableModel() {
@Override
public Class<?> getColumnClass(int columnIndex) {
return (columnIndex == 1) ? Double.class : Float.class;
}
};
Object[][] dataVector = new Object[][]{ {1.23, 2.34}, {3.45, 4.56}, {5.67, 6.78} };
String[] columnIdentifiers = new String[]{"Float Column", "Double Column"};
model.setDataVector(dataVector, columnIdentifiers);
JTable table = new JTable(model);
return new JScrollPane(table);
}
}