JList
에 대해 ListSelectionListener
을 쓰려고하는데, 사용자가 어떤 목록 항목을 선택할지, 그리고 어떤 목록 항목을 선택할지 알고 있습니다. 목록은 {Apple, Orange, Pear}
의 세 가지 항목을 가지며, 현재 선택 Orange
에 있고, 사용자는, Pear
선택한 경우 : 그래서Swing ListSelectionEvent의 "source"항목을 가져 오는 방법은 무엇입니까?
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()
이 버그가 있거나 올바른 스윙 메서드를 사용하고 있지 않습니까? , 내가 만든 그래서 비록
srcFruit = Orange and destFruit = Pear
srcFruit = Pear and destFruit = Orange
3 선택 (마우스 클릭), 나는 Orange
다음에 하나 개의 값에서 변화하지 않았다 클릭 처음부터 :
는 여기에 내가보고해야 출력입니다 내가 믿지 말고 printSourceAndDestFruit
을 호출하는 것이 정확합니다. 내가 Pear
을 선택하고 srcFruit
이 Orange
이고 destFruit
이 Pear
이라는 것이 옳다. 그러나 Orange
으로 다시 돌아 가면 두 번째 println은 srcFruit
이 Pear
이고 destFruit
은 Orange
으로 표시되어야합니다. 왜 그렇지 않습니까?!?!
미리 감사드립니다.