JTable sortieren

  • Themenstarter Themenstarter Michael 8989
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Michael 8989

Gast
Hallo,

ich habe probleme mit dem Sortieren eines Jtable
der sortiert mir Interger als wären es Stings

also ich fülle mein JTable so:
Code:
DefaultTableModel model = new DefaultTableModel(new String[] { "Stück","Beschreibung","Preis" },0);
    
jTable1.setAutoCreateRowSorter(true);
jTable1.setAutoCreateColumnsFromModel(true);

jTable1.setModel(model);
ResultSet r = stmt.executeQuery(sqlString);
int reihe =0;
while(r.next){
model.setRowCount(reihe+1);
jTable1.setValueAt(r.getInt("anzahl"),reihe,0);
jTable1.setValueAt(r.getString("Beschreibung"),reihe,1);
jTable1.setValueAt(r.getDouble("preis"),reihe,2);
usw...
reihe++;
}

Beispiel:

Stück | Beschreibung | Preis
==============================
2 Beispiel 12.80
1 Zum Beispiel 23.90
10 und weiter 100.89

wenn ich jetzt sortieren will spalte Stück
dann wird
10
1
2

die spalte Beschreibung ist OK.
und die spalte Preis wird
12.80
100.90
23.90

was kann ich machen das das sortieren richtig geht.

Gruß Michale.
 
Hallo,

das habe ich probiert geht aber nicht!

gibt es den sonst noch eine möglichkeit?

Gruß Michael
 
und es geht nicht.

weil aus irgendeinem Grund meint das DefaultTableModel es wären alle Daten Strings.

Code:
DefaultTableModel model = new DefaultTableModel(new String[] { "Stück","Beschreibung","Preis" },0); 
    
jTable1.setAutoCreateRowSorter(true); 
jTable1.setAutoCreateColumnsFromModel(true); 

jTable1.setModel(model); 
ResultSet r = stmt.executeQuery(sqlString); 
int reihe =0; 
while(r.next){ 
model.setRowCount(reihe+1); 
model.setValueAt(r.getInt("anzahl"),reihe,0); 
model.setValueAt(r.getString("Beschreibung"),reihe,1); 
model.setValueAt(r.getDouble("preis"),reihe,2); 
usw... 
reihe++; 
}

gruß Michael
 
in dem Beispiel wurde ja auch kein DefaultTableModel verwendet, sondern eines, welches auch mal Integer als ColumnClass zurückgibt?!
 
Hallo,

jetzt habe ich das probiert aber auch ohner erfolg.

Code:
DefaultTableModel model = new DefaultTableModel(new String[] { "Stück","Beschreibung","Preis" },0){
{
             public Class<?> getColumnClass( int column ) { 
                switch( column ){ 
                    case 0: return String.class; 
                    case 1: return Integer.class; 
                    case 2: return Double.class;                    
                    default: return Object.class; 
                } 

        }
        };
    
jTable1.setAutoCreateRowSorter(true); 
jTable1.setAutoCreateColumnsFromModel(true); 

jTable1.setModel(model); 
ResultSet r = stmt.executeQuery(sqlString); 
int reihe =0; 
while(r.next){ 
model.setRowCount(reihe+1); 
model.setValueAt(r.getInt("anzahl"),reihe,0); 
model.setValueAt(r.getString("Beschreibung"),reihe,1); 
model.setValueAt(r.getDouble("preis"),reihe,2); 
usw... 
reihe++; 
}

geht auch nicht.
Gruß Michael
 
Michael 8989 hat gesagt.:
und es geht nicht.

weil aus irgendeinem Grund meint das DefaultTableModel es wären alle Daten Strings.

Das Beispiel überhaupt angeschaut?
Mal rauskopiert und geschaut ob und wie es funktioniert?
versucht die wichtige Stelle(n) zu finden?

Das sollte das wichtigste Teilstück Code für dich sein.
Mehr vorkauen kann man net, wenns damit noch ernsthaftere weitere Probleme gibt, kannste es ja sagen

Code:
      DefaultTableModel model = new DefaultTableModel( names, 0 ){
            @Override
            public Class<?> getColumnClass( int column ) {
                switch( column ){
                    case 0: return String.class;
                    case 1: return Integer.class;
                    case 2: return Point.class;
                    default: return Object.class;
                }
            }
        };
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben