[Javalist] Swing, JTable, ListSelectionListener, kiválasztott sor

András Csányi sayusi.ando at sayusi.hu
2012. Nov. 4., V, 13:33:58 CET


Sziasztok,

Csináltam egy swing alkalmazást, amiben van egy JTable, ami adatokat
jelenít meg. A felhasználó ezeket soronként tudja törölni. Törlés úgy néz
ki, hogy
- kiválaszt egy sort a felhasználó (ennek adatait összeszedjük a
TableModelből)
- kérünk egy megerősítést, hogy tényleg törölni akarja-e
- megerősítés esetén törlünk (szerverhez nyúlunk)
- ismét lekérjük az aktív adatok listáját
- frissítjük a JTable -t, hogy csak az aktív adatok jelenjenek meg.

Ez a folyamat odáig teljesen jól működik, hogy ismét lekérem a még aktív
adatokat. Viszont ilyenkor a JTable elhasal egy

"Exception in thread "AWT-EventQueue-0"
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(ArrayList.java:371)
at java.util.ArrayList.get(ArrayList.java:384)"

Ilyen kivétellel. Nézem már lassan 1 napja, hogy mi a kutyafüle baja van és
arra jöttem rá, hogy amikor ismételten lekérem az adatokat és az odaadom a
JTable -nek így:

partnersTableModel = new PartnersTableModel();

partnersTableModel.setData(PartnerServiceComm.getAllActivePartners());
        corePartnerEntitiesTable.setModel(partnersTableModel);
        partnersTableModel.fireTableStructureChanged();
        corePartnerEntitiesTable.repaint();

Akkor valamiért a tábla még azt hiszi, hogy egy sor ki van választva és
meghívja a

valueChanged(ListSelectionEvent e)

metódust, ami elhasaltatja az egészet.
A kérdésem, hogy a táblának hogyan lehet megmondani azt, hogy nincsen
kiválasztva semmi sem? Próbáltam azt, hogy a JTable
SelectionModel.setLeadSelectionIndex() értékét felülírom, de ez nem ér
semmit sem, mert a valueChanged metódus ezt felülcsapja - ha jól láttam -
miután a friss adatokat lekérem és a valueChanged automatikusan meg lesz
hívva, mert a tábla azt hiszi - talán jogosan, talán nem -, hogy egy sora
ki van választva.

Az interneten csak olyan cikkeket találtam eddig, amelyek arról szólnak,
hogy egy kiválasztott sornak hogyan tudod az értékeit megkapni. Ezekkel
sokra nem mentem.

Tudtok a fenti problémámra valami értelmes megoldást? Gyanítom, hogy nem én
vagyok az egyetlen, aki ezzel találkozott. Vagy tudtok olyan cikket, amiben
esetleg ez le van írva? A hivatalos "Hogyan használjuk a JTable-t?" cikkben
ez nincsen leírva vagy nem vettem észre.

Előre is köszönöm a segítséget!

András


-- 
--  Csanyi Andras (Sayusi Ando)  -- http://sayusi.hu --
http://facebook.com/andras.csanyi
--  ""Trust in God and keep your gunpowder dry!" - Cromwell
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20121104/9b0ca2f4/attachment.html>


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