私はリストを持っており、その各アイテムにはいくつかのものが含まれておりJProgressBar
、多くの更新が可能です。項目の 1 つがその を更新するたびにJProgressBar
、ListDataListener
リスト上の は、
/*
* 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
. 露出イベントを強制すると、それらが再描画されますが、面倒です。
これらがクリッピング領域の外に描画されるのを防ぐために、他に注意する必要があることはありますか?