For en kasse øl vil jeg gerne give dig kilde-koden for en sofistikeret
version af en JTable, som kan sorteres. Den understøtter også flytningen af
kolloner, printning, konfiguration mm. Mail hvis interesseret. Den tog mig
over en uge og lave ;) Du stopper blot en table-model i maven på min JTable.
mvh Morten Enevoldsen
mortene snabel-a softhome.net
"Mikael Nørrelund Andersen" <nospam@mikael-noerrelund.dk> wrote in message
news:3f1bbd11$0$48903$edfadb0f@dtext02.news.tele.dk...
> Hejsa,
>
> jeg prøver at få sorteret indholdet i en JTable ved at
> klikke på headeren, men jeg tror ikke helt jeg forstår
> hvordan man skal gøre.
>
> Jeg kan udfra Suns tutorial se, at man skal lave en
> TableModel og lægge sorteringsmekanismen mellem
> denne og GUIen:
>
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting
>
> Jeg har prøvet mig lidt frem, men tror jeg har gået i
> en forkert retning. Jeg har prøvet at inddrage de klasser
> fra Suns tutorial, som man kan bruge som basis.
>
> Programmets GUI ser således ud:
>
http://mikael-noerrelund.dk/ems/ems-front-full.jpg
>
> Mine tabeller oprettes således (itemTable er den øverste):
> public JTable itemTable, valgTable;
>
> Og de bliver smidt ned i en JScrollPane:
> JScrollPane itemScroll = new JScrollPane(itemTable);
> JScrollPane valgScroll = new JScrollPane(valgTable);
>
> Jeg har lavet en samling objekter til overskrifterne:
> Object itemOver[] = {"Nummerbetegnelse","Betegnelse",
> "Pris", "Enheder","Mængde"};
>
> Jeg bruger nogle vektorer til at sætte overskrifterne på
> med:
> Vector itemOverSkrift = new Vector();
> Vector valgOverSkrift = new Vector();
>
> Disse overskrifter sættes på via denne metode:
> private void setOverskrift(){
> for(int t = 0; t<itemOver.length;t++){
> valgOverSkrift.addElement(itemOver[t]);
> itemOverSkrift.addElement(itemOver[t]);
> }
> }//Slut setOverskrift
>
> Således prøver jeg at inddrage sorteringen:
> GUITableModel myTableModelItems
> = new GUITableModel(items,itemOverSkrift);
> GUITableModel myTableModelValgte
> = new GUITableModel(valgteItems,valgOverSkrift);
>
> items og valgteItems er vektorer indeholdende data
> til tabellerne.
>
> TableSorter sorter1 = new TableSorter(myTableModelItems);
> TableSorter sorter = new TableSorter(myTableModelValgte);
>
> itemTable = new JTable(sorter1);
> valgTable = new JTable(sorter);
>
> setTableColumns();
> Sætter bredde på kolonnerne, se koden her:
>
http://mikael-noerrelund.dk/ems/setTableColumns.txt
>
> Der sker absolut intet ved tryk på headeren, jeg tester
> ved samtidig at lave en
> JOptionPane.showMessageDialog(null, "TJEK!!!");
> for at se om det virker ved tryk på headeren og den
> vises fint (inden tabellen fyldes med data!).
>
> Efter inddragelse af Suns tutorial, har jeg 2 TableModels,
> kan man nøjes med en enkelt eller er det dumt?
> Min egen TableModel ser således ud:
>
http://mikael-noerrelund.dk/ems/GUITableModel.java.txt
>
> Her er et fungerende eksempel, som jeg har gennemtærsket
> sammen med Suns tutorial.
>
http://www.codeguru.com/java/articles/219.shtml
>
> Kan nogen hjælpe mig videre?
>
> --
> Mvh.
> Mikael Nørrelund Andersen
>
> Mail adressen virker.
>