ユーザーが選択しているリスト項目と、ユーザーが選択しているリスト項目を知るListSelectionListener
forを作成しようとしています。JList
したがって、リストに 3 つの項目が{Apple, Orange, Pear}
あり、現在の選択がオンOrange
で、ユーザーが を選択した場合Pear
、次のようになります。
srcFruit
ですOrange
。とdestFruit
はPear
ここに私が持っているコードがあります:
myList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent fruitSelectionEvent) {
printSourceAndDestFruit(myList, fruitSelectionEvent);
}
});
private void printSourceAndDestFruit(JList list, ListSelectionEvent event) {
FruitVO srcFruit = (FruitVO)list.getModel().getElementAt(event.getFirstIndex());
FruitVO destFruit = (FruitVO)list.getModel().getElementAt(event.getLastIndex());
System.out.println("srcFruit = " + srcFruit.getName() + " and destFruit = " = destFruit.getName());
}
アプリケーションが をロードして初期化するとき、JList
デフォルトの選択肢はありません。次のアクションを実行すると:
- クリック
Orange
- クリック
Pear
Orange
もう一度クリック
これが私が得る印刷物です:
srcFruit = Orange and destFruit = Pear
srcFruit = Orange and destFruit = Pear
ここでどこが間違っていますか?getFirstIndex()
/バグがありますかgetLastIndex()
、それとも使用する正しいSwingメソッドではありませんか?
表示される出力は次のとおりです。
srcFruit = Orange and destFruit = Pear
srcFruit = Pear and destFruit = Orange
したがって、3回の選択(マウスクリック)を行ったとしても、最初のクリックOrange
はある値から次の値への変更ではなかったので、起動して呼び出さないのが正しいと思いますprintSourceAndDestFruit
. 私は選択し、それはそれがであるとPear
述べて正しいです。しかし、クリックして2番目に戻ると、printlnにはasとasが必要です。なぜだろう?!?!srcFruit
Orange
destFruit
Pear
Orange
srcFruit
Pear
destFruit
Orange
前もって感謝します!