Avatar billede banielsen Nybegynder
07. september 2004 - 21:44 Der er 8 kommentarer og
2 løsninger

slette en række efter sortering i en JTable

Hej

Jeg bruger Java's TableSorter klasse (http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/TableSorterDemo.java) til at sortere kolonnerne i min JTable. Jeg har dog et stort problem med at efter jeg har sorteret på en kolonne så passer mine rækker på skærmen ikke med element-nr i min model. Nogen ideer til hvordan jeg får opdateret min model, sådan at den passe med det visuelle man har på skærmen?
Håber i forstår!
Avatar billede _carsten Nybegynder
07. september 2004 - 22:06 #1
Forstår ikke lige hvorfor det er et problem, men i stedet for at sortere din JTable, så sorter din model og vis den i din JTable på nøjagtigt samme måde du gjorde inden du begyndte at sortere.

Men hvorfor er det et problem ??
Avatar billede _carsten Nybegynder
07. september 2004 - 22:10 #2
Til orientering:

Der er ingen direkte sammenhæng mellem data's placering i tabellens model og deres placering selve tabellen (GUI), data's placering i tabellen styres via nogle indexer.
Avatar billede _carsten Nybegynder
07. september 2004 - 22:25 #3
Jeg ved ikke om det hjælper på forståelsen, men hvis du betragter din model som et regneark(modelArk) og tabellen(tabelArk) som regneark nr. 2.

Hvis du forestiller dig at disse 2 regneark ligger oven på hinanden, så vil tabelArk når det vises FØRSTE gang afspejle data i modelArk, samtidig går der en usynlig tråd fra modelArkets celle A:1 til tabelArkets celle A:1, tråden (modelIndex) gør at uanset hvordan du flytter rundt på dine rækker /kolonner i tabellen, så vil tabelArket altid vide hvor i modelArket data er placeret.

Hvis dit problem skyldes at du skal gemme data i sorteret form, så hent dem fra tabellen i stedet for at gøre det fra modellen.
Avatar billede banielsen Nybegynder
07. september 2004 - 22:41 #4
hmmm... okay, lige nu sortere jeg også på min model (undskyld havde jeg vidst ikke lige skrevet tydeligt). Men jeg har det problem, at når jeg bruger Java's TableSorter klasse, som virker ved at man klikker på en af headerne i tabellen hvorefter denne sorteres, så sorteres der i en ny Vector, hvorefter den laver en tablechanged. Visuelt bliver rækkerne også sorteret, men hvis jeg klikker på en række i tabellen, og skriver de data ud som repræsentere denne række i min model, så er dataerne ikke sorteret her
Avatar billede _carsten Nybegynder
07. september 2004 - 22:52 #5
Nu har jeg ikke kigget på TableSorterDemo og jeg tvivler på at Sun sorterer deres model i den klasse (det ville bare ikke være særligt sandsynligt) og som du selv siger bliver dine data i tabellen sorteret.

Når du sorterer din tabel, bliver der ikke flyttet så meget som en eneste byte i din model, i modellen ligger data hvor de hele tiden har ligget

Kigger på TableSorterDemo i morgen op ad dagen.
Avatar billede banielsen Nybegynder
08. september 2004 - 00:19 #6
Jag har fundet ud af det, har modeficeret lidt i TableSorter-klassen, så den passer lidt mere til det jeg skal bruge den til... men lig et svar, så skal du få nogle point, som tak for besværet (ok med 30?)
Avatar billede _carsten Nybegynder
08. september 2004 - 08:38 #7
Hmm - er det ikke i underkanten ???

Men det styrer du jo selv !
Avatar billede banielsen Nybegynder
08. september 2004 - 08:40 #8
Det er bare helt i orden... du får lidt mere :) håber at 70 går
Avatar billede banielsen Nybegynder
08. september 2004 - 08:41 #9
ellers må du lige sige til:-)
Avatar billede _carsten Nybegynder
08. september 2004 - 08:48 #10
Havde kalkuleret 50/50, når det nu skulle være, så det må jo være ok :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester