[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