[JList] probleme avec le ListSelectionListener
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:
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);
}
} |