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);
 
    }
}