Domanda

Ho un JList con un DefaultListModel.

Come posso fare un elemento in un JList reagire a eventi doppio clic?

È stato utile?

Soluzione

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

Altri suggerimenti

So che hai una soluzione semplice, ma si consiglia di controllare le Action List per una soluzione più generale che vi permetterà di utilizzare il mouse e la tastiera. La corretta progettazione GUI dovrebbe consentire l'uso di utilizzare entrambi gli approcci.

(sulla base di Mohamed Saligh, la risposta accettata)

Se si sta utilizzando NetBeans

Selezionare il JList> finestra Eventi> 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);
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top