J'ai un JList
avec un DefaultListModel
.
Comment puis-je faire réagir un élément dans un JList
à un événement de double-clic?
String[] items = {"A", "B", "C", "D"};
JList list = new JList(items);
list.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
JList list = (JList)evt.getSource();
if (evt.getClickCount() == 2) {
// Double-click detected
int index = list.locationToIndex(evt.getPoint());
} else if (evt.getClickCount() == 3) {
// Triple-click detected
int index = list.locationToIndex(evt.getPoint());
}
}
});
Je sais que vous avez une solution simple, mais vous voudrez peut-être consulter Action de liste pour une solution plus générale qui vous permettra d'utiliser la souris ainsi que le clavier. Une bonne conception de l'interface graphique doit permettre à l'utilisation d'utiliser l'une ou l'autre approche.
(basé sur Mohamed Saligh, la réponse acceptée)
Si vous utilisez NetBeans
Sélectionnez la JList> fenêtre Événements> mouseClicked
private void jListNicknamesMouseClicked(Java.awt.event.MouseEvent evt) {
JList list = (JList)evt.getSource();
if (evt.getClickCount() == 2) {
int index = list.locationToIndex(evt.getPoint());
System.out.println("index: "+index);
}
}