Vous pouvez ajouter l'écouteur, puis interroger uniquement l'index actuellement sélectionné.
J'ai fait un échantillon pour vous, j'espère que vous le trouverez utile.
Ceci est la section pertinente:
private JComponent list() {
final JList list = new JList(data);
list.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
int i = list.getSelectedIndex();
nameTextField.setText(i >= 0 ? data.get(i) : "");
}
});
return new JScrollPane(list);
}
Gardez à l'esprit que ce n'est pas la seule façon d'aller, c'est juste un point de départ pour vous.
voici l'exemple de travail complet:
import java.util.Vector;
import java.util.Arrays;
import java.awt.BorderLayout;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JComponent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
public class JListSample {
private Vector<String> data = new Vector<String>(
Arrays.asList(new String [] {
"one", "two", "three"
})
);
private JTextField nameTextField;
public static void main(String [] args) {
JListSample s = new JListSample();
s.run();
}
public void run() {
JFrame frame = new JFrame("Selection test");
frame.add(list(), BorderLayout.WEST);
frame.add(editPanel());
frame.pack();
frame.setVisible(true);
}
private JComponent list() {
final JList list = new JList(data);
list.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
int i = list.getSelectedIndex();
nameTextField.setText(i >= 0 ? data.get(i) : "");
}
});
return new JScrollPane(list);
}
private JComponent editPanel() {
JPanel panel = new JPanel();
panel.add( new JLabel("Name:"));
nameTextField = new JTextField(10);
panel.add(nameTextField);
return panel;
}
}
Voici ce qui est affiché:
sample http://img177.imageshack.us/img177/6294/capturadepantalla200911k.png