[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