• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JTable sortierbar ?

DD-Stylz

Neues Mitglied
Morgen liebe Community,

Ich habe eine JTable Tabelle mit 3 Spalten, in der Ersten sind Namen und in den 2 weiteren Zahlen.


Ich möchte jetzt die Tabelle Sortieren können (per Knopfdruck in der Headerleiste), am wichtigsten ist mir jedoch dass die Tabelle sich zuerst den Siegen nach Absteigend anordnet, wie realisiere ich das?

hier der Code ausschnitt ...

Code:
                                  JTable table;
                      
                  Vector title = new Vector();
                      title.add("Spielername");
                      title.add("Siege");
                      title.add("Versuche / Sieg");
                              
                      
                  Vector data = new Vector();
                      
                      
                      
                       
                  try {
                      BufferedReader Datei = new BufferedReader (new FileReader("src\\spiel\\Highscore.txt"));
                        boolean Dateiende = false;  
                        
                          while (Dateiende == false){  // while (Datei.ready())
                              Vector row = new Vector();
                                                          [.....]
                              row.add(listenname);
                              row.add(listensiege);
                              row.add(listenver);
                              
                              data.add(row);     
                              
                              if((Datei.readLine() == null)) {
                                  Dateiende = true;
                              }
                          }
                          Datei.close();    
                    } catch (IOException y) {
                        // TODO Auto-generated catch block
                    } 

                    table = new JTable(data, title);
                    height.setContentPane(new JScrollPane(table));

*Bitte um nachsicht lerne Java erst 3 Wochen lang.*
 
Werbung:
Guck dir doch mal Collections.sort(List) an.
edit: Collections.sort(List) sortiert erst alles was groß geschrieben ist und dann alles was klein geschrieben ist, also z. B.:
A
G
U
a
r
z
Deswegen hab ich grad mal was geschrieben:
Code:
public static ArrayList<String> betterSort(ArrayList<String> a) {
        HashMap b = new HashMap<String, String>();
        ArrayList c = new ArrayList<String>();
        for(int i = 0; i < a.size(); i++) {
            b.put(a.get(i).toUpperCase(), a.get(i));
            c.add(a.get(i).toUpperCase());
        }
        Collections.sort(c);
        
        a = new ArrayList<String>();
        for(int i = 0; i < c.size(); i++) {
            a.add((String) b.get(c.get(i)));
        }
        
        return a;
    }
mfg Bleistift
 
Zuletzt bearbeitet:
hhm vielen Dank aber habs net hingekriegt also dass man es im Header sortiert, naja ist aber halb so schlimm ist ja ne Highscoreliste also sollen es absteigend den siegen nach geordnet werden.

habs dann mal ganz einfach so gemacht:

Code:
String[][] tmpdata = new String[100][3];
                  int a = 0;
                  try {
                      BufferedReader Datei = new BufferedReader (new FileReader("Highscore.txt"));
                        boolean Dateiende = false;  
                        
                          while (Dateiende == false){  // while (Datei.ready())
                              String listenname = Datei.readLine();
                              String listensiege = Datei.readLine();
                              String listenver = Datei.readLine();
                              
                              tmpdata[a][0] = listenname;
                              tmpdata[a][1] = listensiege;
                              tmpdata[a][2] = listenver;     
                              if((Datei.readLine() == null)) {
                                  Dateiende = true;
                              }
                              a++;
                          }
                          Datei.close();    
                    } catch (IOException y) {
                        // TODO Auto-generated catch block
                    } 
                    String tmpString;
                    int h = a-1;
                    int zahl1 = 0;
                    int zahl2 = 0;
                    for (int i = 0; i < h; i++) {
                        for (int j = 0; j < h - i; j++) {
                            
                            zahl1 = Integer.parseInt(tmpdata[j][1]);
                            zahl2 = Integer.parseInt(tmpdata[j+1][1]);
                            if(zahl1 > zahl2) {
                                //Namen umschreiben
                                tmpString = tmpdata[j+1][0];
                                tmpdata[j+1][0] = tmpdata[j][0];
                                tmpdata[j][0] = tmpString;
                                //Siege umspeichern
                                tmpString = tmpdata[j+1][1];
                                tmpdata[j+1][1] = tmpdata[j][1];
                                tmpdata[j][1] = tmpString;
                                //Durchschnitt umschreiben
                                tmpString = tmpdata[j+1][2];
                                tmpdata[j+1][2] = tmpdata[j][2];
                                tmpdata[j][2] = tmpString;
                            }
                            if(tmpdata[j+2][1] == null) {
                                j = h;
                            }
                        }
                    }
                    
                    Vector data = new Vector();
                    for (int i = h-1; i >= 0; i--) {
                        Vector row = new Vector();
                            row.add(tmpdata[i][0]);
                            row.add(tmpdata[i][1]);
                            row.add(tmpdata[i][2]);
                            
                            data.add(row);
                    }
                    table = new JTable(data, title);
                    table.setSize(450, 450);
                    height.setContentPane(new JScrollPane(table));
 
Werbung:
Zurück
Oben