3

JList があり、選択ハンドラー (ListSelectionListener) を登録します。ここで、前に選択したアイテム/インデックスを取得する必要があります。

今までは、最後に選択した項目を自分で保存しています。そうするより良い方法はありますか?言い換えれば、私が長年見逃しているメソッド/ベストプラクティスはありますか?!

4

2 に答える 2

10

私のリストの 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);
}
于 2012-02-08T16:59:01.263 に答える
-1

以前に選択したアイテムをリストに保存するために、カスタム コードを記述する必要はありません。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()



        }
    });
于 2012-02-08T11:46:48.480 に答える