[Java lista] Swing kérdés
Csuhai Roland
csuhai.roland at dk.hu
2011. Ápr. 7., Cs, 07:45:37 CEST
Üdv!
1: A fireTableDataChanged() metódust csak akkor használd ha szükséges.
Ez ugyanis törli a szelekciót, mivel a táblázat (modell) tartalmának
teljes változását feltételezi. Használd inkább a
fireTableRowsInserted() és társait ehelyett.
2: Vagy a hívás előtt mentsd le a szelekciót (getSelectedRows()) és
állítsd be újra a
fireTableDataChanged() hívása után, amennyiben a korábban kiválasztott
entitásod még a táblázatban (modellben) van.
R.
---------------------------------------------------------
Csuhai Roland
Daten-Kontor Kft.
szoftverfejlesztő
---------------------------------------------------------
Email: csuhai.roland at dk.hu
Mobil: +36 (30) 663-6138
Telefon: +36 (72) 552-971
---------------------------------------------------------
-----Original Message-----
From: javalist-bounces at javagrund.hu
[mailto:javalist-bounces at javagrund.hu] On Behalf Of Mester József
Sent: Wednesday, April 06, 2011 8:24 PM
To: javalist at javagrund.hu
Subject: [Java lista] Swing kérdés
Tisztelt Swing guru lista tagok.
A feladat:
Adatbázisból időnként ki kell olvasni adatokat ezeket egy JTabléban
szeretném megjeleníteni. Az adatokat adott időközönként kell kiolvasni
mondjuk 15 percenként.
A JTable -ben levő adatoknak ezután frissülniük kell. Közben a
felhasználó kiválaszthat adatokat amelyekről részletesebb adatokat
kell
kiírni.
Eddig oda jutottam el, hogy a JTable-ben levő adatok frissítéséhez
csináltam egy saját TableModel-t ebben van egy update() metódus ami
meghívja a JPA lekérdezést és az onnan kapott
listát betölt a TableModel-be. Ezután fireTableDataChanged() hívással
elméletileg tudatja a "világgal" , hogy a model-ben megváltoztak az
adatok.
Ez hibátlanul működik mindaddig amíg valaki nem kattint egy sorra,
hogy
onnan adatokat kapjon.
public void valueChanged(ListSelectionEvent e) {
selrow = EmberTable.getSelectedRow();
kiiras = EmberTable.getModel().getValueAt(selrow, 1)+ " "
+
selrow;
System.out.println("selrow értéke : "+ selrow);
JOptionPane.showMessageDialog(EmberTable, kiiras);
}
Itt a visszadott érték kiíratása világosan mutatja, hogy először jól
vissza adja a program a valós értéket, majd rögtön utána egy -1 -et
amitől rögtön dob egy
Exception in thread "AWT-EventQueue-0"
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.get(Vector.java:696)
ilyet.
Ha nem kellene 15 percenként újraolvasni az adatokat akkor tudnám a
megoldást. Ha nem kellene engedni a júzert, hogy kattingasson akkor
is.
De a kettő együtt nem megy .:-(
Merre induljak el?
_______________________________________________
Javalist mailing list
Javalist at javagrund.hu
http://javagrund.hu/mailman/listinfo/javalist
További információk a(z) Javalist levelezőlistáról