ユーザーが選択しているリスト項目と、ユーザーが選択しているリスト項目を知るListSelectionListenerforを作成しようとしています。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が必要です。なぜだろう?!?!srcFruitOrangedestFruitPearOrangesrcFruitPeardestFruitOrange
前もって感謝します!