2011-03-01 3 views
3

내가 JList의와 ListSelectionListener에 자바 클래스가 :자바 ListSelectionListener에 두 번 변경 값

final JList myList = new JList(); 

// ... 

myList.addListSelectionListener(new ListSelectionListener() { 
      public void valueChanged(ListSelectionEvent e) { 
       System.out.println("selected"); 
      } 
}); 

하지만 출력이

selected 
selected 

가 어떻게 코드를 변경해야하고, 그 출력은 하나 selected을해야 하는가?

답변

3

  if(e.getValueIsAdjusting()) 
     { 
      System.out.println("Selected"); 
     } 
+0

감사합니다! 이 작동합니다. – Martynas

+1

그러나 위쪽 화살표와 아래쪽 화살표가있는 목록을 살펴보면이 부분이 깨집니다. 그래서 그 경우에 사용 if (! e.getValueIsAdjusting()) { System.out.println ("Selected"); } 그 외에도 아주 잘 작동합니다. –

+1

Chris가 맞다. e.getValueIsAdjusting() 앞에 '!'가 있어야한다. – sdasdadas

2

getValueIsAdjusting을 살펴보십시오. 이 의 하나입니다

반환 여부를 변경 여전히이 메소드가 false를 돌려 경우에만 인쇄 "를 선택"

을 만들어지고있는 여러 이벤트의 시리즈.

+0

보십시오. – Jigzat

1
당신은 참조해야합니다

다음 API부터 ListSelectionEvent.

getValueIsAdjusting() : 반환이 변경이 계속 만들어지고있는 여러 이벤트의 시리즈의 하나입니다 있는지 여부. 다른 답변이 하나가 마지막 이벤트에 false를 돌려줍니다) (getValuesAdjusting 이후 최고로 표시되어야 올바른 경로에 있었지만