Hallo,
Vermoedelijk gaat het weer om een simpel probleem, maar ik kom er zelf niet meer uit. Zit er nu al een tijdje op blind te staren. Het gaat om het volgende:
Ik heb een programma waar een JTable instaat. Als men een rij selecteert kan er daarna op een knop worden gedrukt en geef ik een recordID naar die functie toe die het hele record in DB ophaalt en een nieuwe scherm toont.
Hiervoor gebruik ik de volgende code:
TableListener class
Als ik nu de eerste keer een record selecteert werkt het prima. De tweede keer word RID niet bijgewerkt en blijft de oude waarde staan. Terwijl in de console wel duidelijk blijkt dat de waarde wel goed opgezocht word door de getValueAt().
Ik zie inmiddels niet meer hoe ik dit kan oplossen, dus als iemand mij op het juiste spoor kan brengen dan graag!
Alvast bedankt!
Vermoedelijk gaat het weer om een simpel probleem, maar ik kom er zelf niet meer uit. Zit er nu al een tijdje op blind te staren. Het gaat om het volgende:
Ik heb een programma waar een JTable instaat. Als men een rij selecteert kan er daarna op een knop worden gedrukt en geef ik een recordID naar die functie toe die het hele record in DB ophaalt en een nieuwe scherm toont.
Hiervoor gebruik ik de volgende code:
code:
1
2
3
4
5
6
| public TableListener tblListener;
public int getSelectedRecordID() {
System.out.println(this.tblListener.getID());
return this.tblListener.getID();
} |
TableListener class
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| public class TableListener implements ListSelectionListener {
private int rid;
public void valueChanged(ListSelectionEvent lsEvent) {
if(lsEvent.getValueIsAdjusting()) {
ListSelectionModel lsm = (ListSelectionModel) lsEvent.getSource();
if (lsm.isSelectionEmpty()) {
rid = 0;
} else {
// Find out which indexes are selected.
int minIndex = lsm.getMinSelectionIndex();
int maxIndex = lsm.getMaxSelectionIndex();
for (int i = minIndex; i <= maxIndex; i++) {
if (lsm.isSelectedIndex(i)) {
rid = Integer.parseInt(tblRecords.getValueAt(i, 0).toString());
System.out.println(Integer.parseInt(tblRecords.getValueAt(i, 0).toString()));
}
}
}
}
}
public int getID() {
System.out.println("RID: " + rid);
return rid;
}
} |
Als ik nu de eerste keer een record selecteert werkt het prima. De tweede keer word RID niet bijgewerkt en blijft de oude waarde staan. Terwijl in de console wel duidelijk blijkt dat de waarde wel goed opgezocht word door de getValueAt().
Ik zie inmiddels niet meer hoe ik dit kan oplossen, dus als iemand mij op het juiste spoor kan brengen dan graag!
Alvast bedankt!