我正在尝试ListSelectionListener
为一个JList
知道用户选择的列表项以及用户选择的列表项。因此,如果列表中包含三个项目{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()
buggy 还是不是正确的 Swing 方法?
这是我应该看到的输出:
srcFruit = Orange and destFruit = Pear
srcFruit = Pear and destFruit = Orange
因此,即使我进行了 3 次选择(鼠标单击),由于我第一次单击Orange
并没有从一个值更改为下一个值,我相信不触发和调用是正确的printSourceAndDestFruit
。I select Pear
and it is correct in statement that srcFruit
is Orange
and that destFruit
is Pear
. 但是当我点击回到Orange
第二个 println 应该有srcFruit
asPear
和destFruit
as Orange
。为什么不呢?!?!
提前致谢!