JList:上一个选定的项目

时间:2012-02-08 09:56:14

标签: java swing jlist selectionchanged

我有一个JList并注册一个选择处理程序(ListSelectionListener)。 现在我需要现在以前选择的项目/索引。

到目前为止,我自己保存了最后一个选定的项目。有没有更好的方法呢? 换句话说:这些年来我是否有错过的方法/最佳实践?!

2 个答案:

答案 0 :(得分:10)

  

我的一个清单是仅限单选。像kleopatra说的那样。事件数据在这里没有帮助。

这不是Kleopatra所说的。事件数据确实有帮助。您不能假设第一个索引表示所选行,最后一个索引表示上一行。

正如Kleopatra建议您需要进一步检查。类似的东西:

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

答案 1 :(得分:0)

您无需编写自定义代码即可将以前选定的项目存储在列表中。 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()



        }
    });