Событие двойного щелчка на элементе JList - PullRequest
67 голосов
/ 03 декабря 2010

У меня есть JList с DefaultListModel.

Как я могу заставить элемент в JList реагировать на событие двойного щелчка?

Ответы [ 3 ]

127 голосов
/ 03 декабря 2010
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());
        }
    }
});
10 голосов
/ 18 марта 2015

(на основе принятого ответа Мохамеда Сэли)

Если вы используете NetBeans

Выберите JList> Окно событий> 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);
    }
}
10 голосов
/ 03 декабря 2010

Я знаю, что у вас есть простое решение, но вы можете проверить Список действий для более общего решения, которое позволит вам использовать мышь и клавиатуру.Правильный дизайн GUI должен позволять использовать любой из этих подходов.

...