[Java lista] jtable sorok törlése

istvan.ketler at lhsystems.com istvan.ketler at lhsystems.com
2007. Már. 9., P, 13:53:51 CET


> több sornál meg csak néhányat töröl, kijelölök 5öt töröl 3mat
> 
> hol rontom el?

Szia,

egyrészt gondolj arra, hogy amikor a TableModel-nek azt mondod, hogy removeRow, akkor attól kezdve minden hátrébb levő sor indexe csúszik. Ha törlöd a harmadik sort, akkor a korábbi negyedik lesz a harmadik. Szóval ha az elején kezded a törlést, akkor a hátrébb lévő (nagyobb) indexek az első törlés után érvénytelenné válnak.

A JTable amúgy véletlenül sorba rendezve szokta visszaadni a selected sorokat, de ha szépet akarsz, akkor a visszakapott tömböt magad rendezed, és a hátulról (a legnagyobb indexű sortól) kezdve végzed el a törlést. (Collections.sort(...) például sokat segíthet a rendezésben). De azt is lehet, hogy törlés közben figyeled, hogy eddig mennyit töröltél, és állandóan helyesbíted az indexet (de ez is csak rendezett selectedRows tömb esetén működik).

Másrészt a removeRow leírásában benne van, hogy értesíti a listener-eket, szóval azt elvileg nem kell külön kézzel megtenned. Valójában egy saját modell esetén pont azt szokta az ember csinálni, hogy lehessen "sokat" törölni úgy, hogy csak egy esemény generálódjék. Feladatfüggő, hogy érdemes-e ezért saját modellt írni (nem nagy kaland persze).

Üdvözlettel,

Iván


További információk a(z) Javalist levelezőlistáról