JList があり、選択ハンドラー (ListSelectionListener) を登録します。ここで、前に選択したアイテム/インデックスを取得する必要があります。
今までは、最後に選択した項目を自分で保存しています。そうするより良い方法はありますか?言い換えれば、私が長年見逃しているメソッド/ベストプラクティスはありますか?!
JList があり、選択ハンドラー (ListSelectionListener) を登録します。ここで、前に選択したアイテム/インデックスを取得する必要があります。
今までは、最後に選択した項目を自分で保存しています。そうするより良い方法はありますか?言い換えれば、私が長年見逃しているメソッド/ベストプラクティスはありますか?!
私のリストの 1 つは単一選択のみです。クレオパトラの言うとおりです。ここでは、イベント データは役に立ちません。
それはクレオパトラが言ったことではありません。イベントデータは役に立ちます。最初のインデックスが選択された行を表し、最後のインデックスが前の行を表すとは限りません。
クレオパトラが示唆したように、さらにチェックする必要があります。何かのようなもの:
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);
}
以前に選択したアイテムをリストに保存するために、カスタム コードを記述する必要はありません。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()
}
});