2017-12-22 4 views
1

Picker에서 actionListener를 사용하면 취소 btn이 예상대로 작동하지 않습니다. 처음에는 선택기를 취소하면 getSelectedStringIndex가 -1을 제공합니다. 첫 번째 클릭 한 다음 확인을 클릭하면 인덱스 0을 제공합니다. 여기서 취소를 클릭 할 때마다 인덱스 0을 반환합니다. 취소를 클릭하면 -1이 반환됩니다. 어떻게 해결할 수 있습니까?피커 기능이 예상대로 작동하지 않습니다.

코드 :

periodPicker.addActionListener(e -> { 

    String periodString = ""; 
    if (periodPicker.getSelectedStringIndex() == 0) { 
     periodString = "3"; 
    } else if (periodPicker.getSelectedStringIndex() == 1) { 
     periodString = "6"; 
    } 

    if (!periodString.equals("")) { 
     System.out.println("index " + periodPicker.getSelectedStringIndex()); 
    } 
} 

답변

0

재설정되지 않습니다 취소합니다. 선택을하고 취소를 클릭하면 이전 선택이 반환됩니다. 선택 값을 null로 설정하여 선택 값을 지울 별도의 UI 요소를 추가해야합니다. 해당 UI가 기본적으로 렌더링되므로 UI ​​자체에 Picker과 통합되지 않습니다.

+0

사용자가 피커에서 취소 또는 확인 버튼을 클릭하는지 어떻게 알 수 있습니까? 내가 그곳에서 웃음 거리를 얻을 수 있다면, 나는 그것이 효과가 있다고 생각합니다. – beck

+0

피커에서 반환 한 값과 이전 값을 비교하여이 문제를 해결하고 변경이 없으면 선택기 작업을 무시합니다. –

+0

일반적으로 네이티브 피커 API는 취소의 경우 기본값을 반환해야하지만 '표시'에있는 장치 API에만 적용됩니다. 내가하고 싶은 일 중 하나는 안드로이드 스타일의 네이티브 피커를 순수 자바로 구현하여 사람들이 적절하게 커스터마이징하고 테마를 정할 수 있도록하는 것입니다. 불행히도, 그것은 약간의 작업입니다 ... –

관련 문제