2017-12-18 4 views
0

Ich habe ein Problem in Bezug auf die Sortierung in jTable1 Ich schaute auf einige bereits gestellte Fragen zu diesem Problem in diesem Forum, aber keine Antwort scheint für mich zu arbeiten, wie kann ich numerische Sequenz einrichten, die arbeitet eine reguläre Reihenfolge anstelle von 1, 10, 11 ... 2, 20, 21, ... 3, .. und usw. Wie kann ich dieses Stück Code jTable1.setAutoCreateRowSorter(true); ändern, da es nicht richtig zu funktionieren scheint. Hier ist der aktuelle Code, den ich verwende.jTabelle. Zeilensortierung() aus Textdatei

try { 
     FileReader fR = new FileReader("table.txt"); 
     BufferedReader br = new BufferedReader(fR); 
     String firstLine = br.readLine().trim(); 
     String[] columnsName = firstLine.split(","); 
     DefaultTableModel model = (DefaultTableModel)jTable1.getModel(); 
     model.setColumnIdentifiers(columnsName); 
     Object[] tableLines = br.lines().toArray(); 
     for(int i = 0; i < tableLines.length; i++) 
     { 
      String line = tableLines[i].toString().trim(); 
      String[] dataRow = line.split("/"); 
      model.addRow(dataRow); 

     } 
        jTable1.setAutoCreateRowSorter(true); 

    } catch (IOException ex) { 
     Logger.getLogger(NewJFrame3.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+1

Konvertieren Sie die Sequenz in einen numerischen Wert, 'String' wurde basierend auf seiner textuellen Darstellung sortiert, was ein sehr häufiges Problem ist – MadProgrammer

Antwort

0

@MadProgrammer einen Kommentar hinterlassen, die die richtige Antwort ist. Sie müssen eine Reihe numerischer Werte einfügen (dh - Integer [], Float [], Double [] usw.), im Gegensatz zu der Zeichenfolge [], die Sie gerade verwenden.

Für ein Beispiel dafür, wie diese Umwandlung zu machen, hier ist, wie ein String [] in eine Integer konvertieren []

String line = tableLines[i].toString().trim(); 
String[] dataRow = line.split("/"); 
int dataRowLength = dataRow.length; 
Integer[] dataRowIntegers = new Integer[dataRowLength]; 
for(int i = 0; i < dataRowLength; i++){ 
    dataRowIntegers[i] = Integer.valueOf(dataRow[i]); 
} 
model.addRow(dataRowIntegers); 

Hoffnung einige Ihren Code als Ausgangspunkt verwenden, das hilft!