Bonjour,
voila, j'ai une liste d'elements et j'aimerai associer une action au fait que l'on change d'element selectionné dans cette liste. J'ai donc ajouté un ListSelectionListener a ma liste et ercit la methode valueChanged, mais voila mon probleme, ce bout de code est executé 2 fois ...
Voila une classe Test qui illustre parfaitement mon probleme...
Je n'ai pas l'impression d'ajouter 2 listeners a ma liste, je ne vois vraiment pas d'ou vient ce probleme!
merci de votre aide
Eric
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 import java.awt.*; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableModel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; public class Test extends JPanel implements ListSelectionListener { JList categoryList; String [] listItems; JButton button = new JButton ("Test"); public Test () { this.setLayout(new FlowLayout()); this.setPreferredSize(new Dimension (500, 300)); setCategoryList(); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addData(); } }); this.add(button); this.add(categoryList); } private void setCategoryList () { listItems = new String [] {"category 1", "category 2", "category 3"}; categoryList = new JList (listItems); categoryList.addListSelectionListener(this); } private void addData () { } public void valueChanged (ListSelectionEvent e) { String selected = "" + categoryList.getSelectedIndex(); System.out.print ("item selected = " + selected); System.out.println (" - value = " + categoryList.getSelectedValue().toString()); } public static void main(String[] args) { JFrame frame = new JFrame (); frame.getContentPane().add(new Test()); frame.setBounds (100, 100, 500, 500); frame.setVisible(true); } }
Partager