Szia! <br>Ez sem valami szerencses megoldas:<br>partnersTableModel = new PartnersTableModel();<br>Minden alkalommal kidobod a regi modelt, amikor uj adatok jonnek? Ezt nem igy kellene megoldani. Maradjon csak meg az a regi model. Annak van egy getValuAt(...) metodusa. Abban kell megoldani azt, hogy a friss adatokat adja a JTable-nek, es ne a regieket. Van a modellednek (ami gondolom egy DefaultTableModel leszramazott) egy olyan metodusa, ami visszaadja a tabla sorainak a szamat. Azt felulirtad? Megfelelo modon vissszaadja az uj adatok megerkezese utan az uj erteket? Ha nem kozlod a tablaval hogy hany sor van az uj modelben, az talan okozhatja a kivetelt.<br>
<br>"partnersTableModel.fireTableStructureChanged();"<br>Ez valoban kell? tehat a tabla strukturaja is megvaltozott? Nem csak a benne levo adatok? mert akkor a fireTableDataChange() is boven eleg.<br><br>
<div>"corePartnerEntitiesTable.repaint();"<br>Ez minek? A swing megoldja ezt sajat maga. Ha "kezzel" kell retpaint-elned, akkor valamit nem jol csinalsz.<br></div><br>Es valoban "kar" az egesz tablat ujra lekerni a serverrol (ber erre lehet egyeb okod, ami megis indokolja a dolgot).<br>
Sikeres torles utan egyszeruen csinal a tablad modelje egy fireRowsDeleted(mettol, meddig) eventet, es nem lesz semmilyen nullPointerException<br><div class="gmail_extra"><br><br><div class="gmail_quote">2012. november 4. 13:33 András Csányi írta, <span dir="ltr"><<a href="mailto:sayusi.ando@sayusi.hu" target="_blank">sayusi.ando@sayusi.hu</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sziasztok,<div><br></div><div>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 </div>
<div>- kiválaszt egy sort a felhasználó (ennek adatait összeszedjük a TableModelből)</div>
<div>- kérünk egy megerősítést, hogy tényleg törölni akarja-e</div><div>- megerősítés esetén törlünk (szerverhez nyúlunk)</div><div>- ismét lekérjük az aktív adatok listáját</div><div>- frissítjük a JTable -t, hogy csak az aktív adatok jelenjenek meg.</div>
<div><br></div><div>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 </div><div><br></div><div>"Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1<div>
<span style="white-space:pre-wrap">        </span>at java.util.ArrayList.elementData(ArrayList.java:371)</div><div><span style="white-space:pre-wrap">        </span>at java.util.ArrayList.get(ArrayList.java:384)"</div><div>
<br></div><div>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:</div><div><br></div><div><div>partnersTableModel = new PartnersTableModel();</div>
<div> partnersTableModel.setData(PartnerServiceComm.getAllActivePartners());</div><div> corePartnerEntitiesTable.setModel(partnersTableModel);</div><div> partnersTableModel.fireTableStructureChanged();</div>
<div> corePartnerEntitiesTable.repaint();</div></div><div><br></div><div>Akkor valamiért a tábla még azt hiszi, hogy egy sor ki van választva és meghívja a </div><div><br></div><div>valueChanged(ListSelectionEvent e)<br>
</div><div><br></div><div>metódust, ami elhasaltatja az egészet.</div><div>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.</div>
<div><br></div><div>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.</div><div><br></div><div>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.</div>
<div><br></div><div>Előre is köszönöm a segítséget!</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>András</div><div><br></div><div><br></div>-- <br>-- Csanyi Andras (Sayusi Ando) -- <a href="http://sayusi.hu" target="_blank">http://sayusi.hu</a> -- <a href="http://facebook.com/andras.csanyi" target="_blank">http://facebook.com/andras.csanyi</a><br>
-- ""Trust in God and keep your gunpowder dry!" - Cromwell<br>
</font></span></div>
<br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br></div>