JTable sortieren

=fire=

Erfahrenes Mitglied
Hallo,

ich habe ein AbstractTableModel erstellt. Leider weiß ich nicht wie ich der Tabelle sagen kann das Sie sich durch klick auf die Spalte selbst sortieren soll.

Habe mir schon das Tutorial auf der Sun Seite angesehen, aber anscheind geht das so nicht.
http://download.oracle.com/javase/tutorial/uiswing/components/table.html#sorting

Java:
JTable table = new JTable();
table.setAutoCreateRowSorter(true);

Diese Methode gibt es bei mir nicht.

Gruß Simon
 
Hallo,

ich vemute eher das es diese Methode seit Java 1.6 nicht mehr gibt. Habe eben noch mal ein Update gemacht. Ich habe aber 1.6.x

Gruß Simon
 
Ein elementarer Beispiel dafür:
Code:
Object[][] data = {{"cccc","qqqq","jjjjj"},{"aaaa","dddd","ffff"}};
Object[] column = {"1","2","3"};
JTable tab = new JTable(data, column);
tab.setAutoCreateRowSorter(true);
Probiere, ob es funktioniert.
 
Hallo,

in so einem Fall lohnt es sich auch, die API zu lesen. Und da sieht man unter anderem, dass die besagte Methode seit Java 1.6 existiert:

http://download.oracle.com/javase/6/docs/api/javax/swing/JTable.html#setAutoCreateRowSorter(boolean)

Unter Java 1.5 gibts diese Funktion beispielsweise nicht. Siehe:

http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JTable.html

Aber theoretisch kannst du es auch ohne die Methode lösen und einfach selbst programmieren. Schau dir dafür einfach mal den Post an:

http://www.tutorials.de/swing-java2...lttablemodel-jtable-sortieren.html#post989536

Gruß Ben
 
Ich sag doch, dass es funktioniert.

Kann es sein, dass du die JTable vielleicht direkt in deine Gui einfügst, ohne sie erst in eine JScrollPane zu packen. Denn das sollte man sinnvollerweise tun, nicht nur zum Scrollen, sondern auch wegen den Headern und erst wenn diese vorhanden sind, kann man auch die Tabelle sortieren.
 
Naja, die Symptome waren ja nicht, dass irgendwas nicht funktioniert wie beispielsweise fehlende Spaltenheader. Er schreibt ja, dass es die Methode bei ihm schlichtweg nicht gibt, also in der IDE vermutlich rot unterkringelt wird.

Drum würde mich mal interessieren, auf welche Java-Plattform dein Eclipse oder Netbeans zurückgreift. Weil es nützt ja nix, wenn man beispielsweise nur die Java-Runtime-Environment auf 1.6 updated, aber mit nem 1.5er SDK entwickelt.


Gruß Ben
 
Hallo,

ich benutzte eclipse, dort wie erwähnt diese Methode nicht akzeptiert. Ich habe im Programme Ordner unter Java die jdk1.6.0_23 liegen. Kann ich sehen worauf eclipse zurückgreift?

Habe das jetzt aber anders gelöst. Nur klappt bei mir der Sortier Algorithmus nicht.

this.list ist meine ArrayList, zwei Dimensional. Darin Enthalten sind Strings und Int, leider weiß ich nicht wie ich diesen Code anpassen kann. Geht das auch einfacher? :D
Java:
    public void sortByColumn(final int clm) {
        Collections.sort(this.list, new Comparator() {
            public int compare(Object o1, Object o2) {
                Vector v1 = (Vector) o1;
                Vector v2 = (Vector) o2;

                int size1 = v1.size();
                if (clm >= size1)
                    throw new IllegalArgumentException("max column idx: "+ size1);

                Comparable c1 = (Comparable) v1.get(clm);
                Comparable c2 = (Comparable) v2.get(clm);

                int cmp = c1.compareTo(c2);

                if (sortColumnDesc[clm]) {
                    cmp *= -1;
                }

                return cmp;
            }
        });
        this.sortColumnDesc[clm] ^= true;
    }
 
Du kannst in Eclipse ganz einfach oben im Menu unter Projekt->Properties->java compiler sehen welche Version dein Eclipse nutzt :D Bzw welche Version fuer das Projekt eingestellt ist
 
Zuletzt bearbeitet:
Zurück