我有一个JList并注册一个选择处理程序(ListSelectionListener)。 现在我需要现在以前选择的项目/索引。
到目前为止,我自己保存了最后一个选定的项目。有没有更好的方法呢? 换句话说:这些年来我是否有错过的方法/最佳实践?!
答案 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()
}
});