/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
ListSelectionListener og dobbelt-kald
Fra : Janus


Dato : 15-12-05 15:36


Hej NG!

Jeg har tilføjet en ListSelectionListener til en ListSelectionModel
tilhørende et JTable.
valueChanged(ListSelectionEvent e) bliver (desværre) kaldet 2 gange, når
man skifter selection af en row i mit JTable. Det er selvfølgelig logisk
nok, da det drejer sig om hhv en select og en de-select.

Men er der ikke en smart måde at skelne mellem disse to events, da mit
program kun skal bruge den row, der er blevet selected?


På forhånd tak, Janus

 
 
Henrik Davidsen (15-12-2005)
Kommentar
Fra : Henrik Davidsen


Dato : 15-12-05 17:27

> Men er der ikke en smart måde at skelne mellem disse to events, da mit
> program kun skal bruge den row, der er blevet selected?

Jeg ved ikke lige om der er en smartere måde, og har heller ikke prøvet om
dette vil virke, men jeg ville i valueChanged metoden teste på
e.getFirstIndex, og sammenligne med getMinSelectedIndex på ListModel'en.
Hvis de er ens, må valueChanged-kaldet dreje sig om den række der er blevet
valgt. Hvis e.getFirstIndex og getMinSelectedIndex på listen er forskellige,
må e.getFirstIndex være index'et på den række der nu ikke er selected
længere.

Dvs, at metoden blot skal returnere hvis e.getFirstIndex og
getMinSelectedIndex er forskellige, og ellers udføres metoden.

Prøv engang (eller vent og se om der kommer mere fornuftige løsninger ;)

/Sjang

Ps. Hvis du arbejder med flere valgte rækker, må du lige lave noget
gennemløb på getFirstIndex og getLastIndes på ListSelectionEventen, og
sammenligne med ListModel'ens getMinSelectedIndex og getMaxSelectedIndex.



Filip Larsen (15-12-2005)
Kommentar
Fra : Filip Larsen


Dato : 15-12-05 21:58

Janus skrev

> Jeg har tilføjet en ListSelectionListener til en ListSelectionModel
> tilhørende et JTable.
> valueChanged(ListSelectionEvent e) bliver (desværre) kaldet 2 gange,
når
> man skifter selection af en row i mit JTable.

Standard idiomet er at ignorere kald hvor e.getValueIsAdjusting() er
sand, a la

public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
// .. ager på den nye selection
}
}


Mvh,
--
Filip Larsen



Janus (18-12-2005)
Kommentar
Fra : Janus


Dato : 18-12-05 22:58

Filip Larsen wrote:

>
>
> Standard idiomet er at ignorere kald hvor e.getValueIsAdjusting() er
> sand, a la
>
> public void valueChanged(ListSelectionEvent e) {
> if (!e.getValueIsAdjusting()) {
> // .. ager på den nye selection
> }
> }
>
>
> Mvh,

Jæsjæs, den sad lige i øjet! Mange tak :)


Vh Janus

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste