2010-07-06 4 views
4
를 사용하여 나는이 문제에 봉착

:자바 스윙 : 자동 스크롤의 JList와 JScrollPane의

을 내가 가진 분명히 보여 허용하지 않는 약 1000 요소 및이 JList의 크기를 말할와 (JScrollPane의 이내)하는 JList 모든 데이터. 자, JScrollPane 내에이 JList를 가지고 있습니다. JList.setSelectedIndex()라고 말하면 JScrollPane이 자동으로 스크롤되어 JList의 해당 인덱스에 해당 요소를 표시해야합니다.

미리 감사드립니다.

답변

6

나는 다음과 같은 방법을 찾고 있습니다 믿습니다 둘러싸 뷰포트 내에서

public void ensureIndexIsVisible(int index)

스크롤리스트로 지정된 셀을 완전하게 가시로합니다. 이 메서드는 지정된 셀의 경계를 사용하여 scrollRectToVisible을 호출합니다. 이 메소드가 작동하려면 JList가 JViewport 내에 있어야합니다. 지정된 인덱스가 목록의 셀 범위 밖에있는 경우이 메서드는 아무 것도 얻지 않습니다.

+0

대단히 감사합니다. 그것은 내가 필요한만큼 일했다! –

1

나는이 테스트를하지 않은,하지만 당신은 사용할 수 있어야

r은 관심있는 정보를 포함하여 JList의 총 (가상) 지역의 면적은
myScrollPane.getViewport().scrollRectToVisible(Rectangle r) 

. JList의 항목 높이와 행 번호에서 필요한 수직 오프셋을 계산할 수 있습니다.


편집 : 구문 응답은 구현하기가 더 쉽습니다.

+0

+1 실제로'JList'는'ensureIndexIsVisible()'을 구현하기 위해'scrollRectToVisible()'을 사용합니다. – trashgod