많은 항목을 업데이트 할 수있는 JProgressBar
을 비롯한 각 항목에 몇 가지 항목이있는 목록이 있습니다. 항목 중 하나가 업데이트 될 때마다 그 JProgressBar
, 목록에있는 ListDataListener
그것을 내가 스크롤이 난 이후, 디스패치 스레드에서 수행되었는지 확인하기 위해 노력하고있어뷰포트 밖의 JScrollPane 페인팅 목록
/*
* This makes the updating content item automatically scroll
* into view if it is off the viewport.
*/
public void contentsChanged(final ListDataEvent evt) {
if (!EventQueue.isDispatchThread()) {
/**
* Make sure the scrolling happens in the graphics "dispatch" thread.
*/
EventQueue.invokeLater(new Runnable() {
public void run() {
contentsChanged(evt);
}
});
}
if (playbackInProgress) {
int index = evt.getIndex0();
currentContentList.ensureIndexIsVisible(index);
}
}
주를 사용하여 가시 범위를 스크롤하려고 아마도 문제는 다시 칠하는 동안 스크롤되는 문제 일 것입니다. 그리고 아직 상황이 실제로 활발하다면 목록 항목 중 일부가 뷰포트 외부로 페인트되어 JScrollPane
외부의 항목을 덮어 쓰는 문제가 있습니다. 노출 이벤트를 강요하면 그 일을 다시 채울 수 있지만 성가시다.
클리핑 영역 외부에서 이러한 것들을 멈추려면주의해야 할 사항이 있습니까?