Moinmoin,
ich möchte meine Datensätze in einem JTable darstellen. Das funktioniert auch alles soweit. Jetzt wollte ich noch einbauen, dass die Sortierung der Spalten korrekt funktioniert, da Zahlenwerte nicht korrekt sortiert wurden (1, 10, 11, 22, 220, 3).
Habe dann recherchiert und etwas gefunden. Dort hieß es, man müsse die getColumnClass Methode vom DefaultTableModel nutzen um den Datentyp der jeweiligen Spalte festzulegen. Danach solle das Sortieren funktionieren.
Das habe ich probiert und es hat funktioniert - super. Aber leider zerschießt mir "getColumnClass" etwas an anderer Stelle (oder ich vermute zumindest, dass es daran Schuld ist). Mittels "tableobject.setDefaultEditor(Object.class, null);" habe ich vorher sichergestellt, dass keine der angezeigten Werte im Grid verändert werden können. Bei allen Spalten, bei denen ich per getColumnClass explizit die Typen angegeben habe, sind jetzt per Doppelklick darauf editierbar. Kommentiere ich getColumnClass komplett aus, ist es wieder nicht editierbar, wird aber falsch sortiert.
Hier mein Quellcode der Methode, die die Tabelle zusammenbaut:
Hat jemand eine Idee, woher mein Problem kommt?
Grüße und schönes Wochenende
ich möchte meine Datensätze in einem JTable darstellen. Das funktioniert auch alles soweit. Jetzt wollte ich noch einbauen, dass die Sortierung der Spalten korrekt funktioniert, da Zahlenwerte nicht korrekt sortiert wurden (1, 10, 11, 22, 220, 3).
Habe dann recherchiert und etwas gefunden. Dort hieß es, man müsse die getColumnClass Methode vom DefaultTableModel nutzen um den Datentyp der jeweiligen Spalte festzulegen. Danach solle das Sortieren funktionieren.
Das habe ich probiert und es hat funktioniert - super. Aber leider zerschießt mir "getColumnClass" etwas an anderer Stelle (oder ich vermute zumindest, dass es daran Schuld ist). Mittels "tableobject.setDefaultEditor(Object.class, null);" habe ich vorher sichergestellt, dass keine der angezeigten Werte im Grid verändert werden können. Bei allen Spalten, bei denen ich per getColumnClass explizit die Typen angegeben habe, sind jetzt per Doppelklick darauf editierbar. Kommentiere ich getColumnClass komplett aus, ist es wieder nicht editierbar, wird aber falsch sortiert.
Hier mein Quellcode der Methode, die die Tabelle zusammenbaut:
Code:
private void preparetable() {
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public Class<?> getColumnClass(int columnIndex) {
switch(columnIndex){
case 0:
return Integer.class;
case 1:
return Integer.class;
case 6:
return Double.class;
}
return super.getColumnClass(columnIndex);
}
};
//DefaultTableModel tableModel = new DefaultTableModel();
table_dbrecords.setModel(tableModel);
tableModel.addColumn("Col1");
tableModel.addColumn("Col2");
tableModel.addColumn("Col3");
tableModel.addColumn("Col4");
tableModel.addColumn("Col5");
tableModel.addColumn("Col6");
tableModel.addColumn("Col7");
tableModel.addColumn("Col8");
tableModel.addColumn("Col9");
for (int i = 0; i < objectlist.size(); i++) {
tableModel.addRow(new Object[]{
objectlist.get(i).getCol1(),
objectlist.get(i).getCol2(),
objectlist.get(i).getCol3(),
objectlist.get(i).getCol4(),
objectlist.get(i).getCol5(),
objectlist.get(i).getCol6(),
objectlist.get(i).getCol7(),
objectlist.get(i).getCol8(),
objectlist.get(i).getCol9()
});
}
table_dbrecords.setDefaultEditor(Object.class, null);
table_dbrecords.setAutoCreateRowSorter(true);
}
Hat jemand eine Idee, woher mein Problem kommt?
Grüße und schönes Wochenende