JList: предыдущий выбранный элемент - PullRequest
3 голосов
/ 08 февраля 2012

У меня есть JList и зарегистрирован обработчик выбора (ListSelectionListener).Теперь мне нужно теперь предыдущий выбранный элемент / индекс.

До сих пор я сохраняю последний выбранный элемент самостоятельно.Есть ли лучший способ сделать это?Другими словами: есть ли метод / лучшая практика, которую я скучаю все годы?!

Ответы [ 2 ]

10 голосов
/ 08 февраля 2012

Один из моих списков только для одного выбора.как говорит Клеопатра.Данные о событиях здесь не помогают.

Это не то, что сказал Клеопатра.Данные события помогают.Вы просто не можете предположить, что первый индекс представляет выбранную строку, а последний индекс представляет предыдущую строку.

Как и предполагал Клеопатра, вам необходимо выполнить дополнительную проверку.Что-то вроде:

public void valueChanged(ListSelectionEvent e)
{
    JList list = (JList)e.getSource();
    int selected = list.getSelectedIndex();
    int previous = selected == e.getFirstIndex() ? e.getLastIndex() : e.getFirstIndex();

    System.out.println();
    System.out.println("Selected:" + selected);
    System.out.println("Previous:" + previous);
}
0 голосов
/ 08 февраля 2012

Вам не нужно писать свой код для сохранения предыдущего выбранного элемента в списке.JList предоставляет ListSelectionListener, который сделает всю работу за вас.Вот способ получить последний выбранный элемент.

 customList.addListSelectionListener(new ListSelectionListener() {

        @Override
        public void valueChanged(ListSelectionEvent arg0) {
             // TODO Auto-generated method stub

                         //Previous Selected Item index will be obtained by arg0.getFirstIndex()
                       // Similarly Currently Selected Item index will be obtained by this method arg0.getLastIndex()



        }
    });
...