2013-10-13 2 views
1

자바 스윙에서리스트를 사용하는 법을 배우고 있습니다. 및 ListSelectionEvent을 사용하여 JList을 사용하는 작은 프로그램을 작성하는 동안 getFirstIndexgetLastIndex의 값과 관련하여 혼란스러워했습니다.firstIndex와 lastIndex에 대한 혼란 스윙

각 말씀에 대한 문서 -

getFirstIndex :

은 선택이 변경된 가능성이있는 최초의 행의 인덱스를 돌려줍니다.

getLastIndex은 선택이 변경된 가능성이있는 마지막 행의 인덱스를 돌려줍니다.

가 지금은 (허용 한 범위 선택으로)이 같은 목록을 가지고 말할 수 -

Element 1 
Element 2 
Element 3 
Element 4 
Element 5 

는 처음에 아무도, 내가 하나를 선택하지 selected.Now가되고 firstIndex 0 준

, lastIndex 속성은 0을 준 맞다.

는 지금, 나는 변화를 누른 상태에서 firstIndex는 0을주고는 lastIndex 2.는 lastIndex는 괜찮지 만, 내가 firstIndex의 가치에 대한 몇 가지 질문이 준, 여기에 3을 선택 -

  1. 요소 1 인을 여전히 선택되고 그 선택이 변경되지 않았다면, firstIndex는 어떻게 0입니까?

  2. 위의 견해를 유지하면서 firstIndex가 1이 아니어야합니다. 선택 사항이 변경된 첫 번째 행 (선택 취소 -> 선택됨) 이니?

또한 목록에는 다른 배경에 의해 선택된 요소가 표시됩니다. 이제 선택을하면 테두리가있는 요소도 표시됩니까? 그게 무엇을 나타내는가?

답변

2

Element 1을 선택한 다음 Shift 키를 누른 상태에서 Element 3을 선택하면 Element 1에서 Element 3 사이의 범위를 선택할 수 있습니다. JListElement 1, Element 2Element 3에 파란색 배경 (기본 선택 표시기)을 렌더링해야합니다.

따라서 ListSelectionEvent은 현재 선택 항목이 인덱스 0에서 인덱스 2로 올바르게보고됩니다. 이러한 인덱스 범위는 ListModel의 요소를 나타냅니다.

ListSelectionModelListSelectionEvent은 이전 선택에서 현재로의 선택 변경 사항이 아니라 현재 선택 사항을보고합니다.

+0

오케이. 그러나, 내가이 선택을 유지한다고 말하게한다. 이제 Shift 키를 누른 상태에서 요소 4를 선택합니다. 그런 다음 firstIndex는 2와 lastIndex를 반환합니다. 0-3일까요? – Cygnus

+0

문제를 재현 할 수 없습니다. 첫 번째 목록 요소를 선택하면 Shift 키를 누른 상태에서 세 번째 목록 요소를 선택하십시오. 그러면 1 2 3이 선택됩니다. Shift 키를 누른 상태에서 4를 선택하면 1 2 3 4가 선택됩니다. 나는이 샘플 app http://docs.oracle에서 시험해 보았습니다.co.kr/javase/tutorial/uiswing/events/listselectionlistener.html –

+0

아니, 당신이 나를 오해하고 있습니다. 제가 말하고자하는 것은 선택 사항이 훌륭하다는 것입니다 - 1,2,3,4가 선택되어있는 것을 봅니다. 그러나 firstIndex는 0과 3이 아닌 2와 lastIndex 3을 반환합니다. – Cygnus