2016-09-04 4 views
0

"結果"が本当に速い(結果の種類はここでは重要ではないが、たまには10以上の場合がある)小さなアプリケーションがあり、テーブルのような形でユーザーに表示したいフォームなど。私はそれのためにスイングJTable(JFrameの内部)を使用して、新しい行として新しい結果を挿入し、再び下にスクロールするメソッドを実行します。スウィング更新の遅れ

Object[] data = new Object[6]; 
    //fill data-array 
    ((DefaultTableModel) resultTable.getModel()).addRow(data); 
    resultTable.scrollRectToVisible(resultTable.getCellRect(resultTable.getRowCount(), 0, false)); 

これは何とか仕事をしていませんが、(再描画の膨大な量のために)ほとんどの時間表の行がウィンドウの周りにグリッチように見えるように、スイングは、ビューを更新するときに少しラグのようです。

これを防止する方法はありますか?一部のスイング内部ペイントロックと同期する/結果を表示する別の方法を使用する

答えて

2

関連するコードがないと何が間違っているのかは分かりませんが、私はあなたがSwingイベントスレッドに時間がかかることを推測しています(推測する必要はありません)。その場合は、SwingWorkerを使用してバックグラウンドスレッドでの処理を行い、SwingイベントスレッドまたはEDTのSwing状態を更新することができます。たとえば、SwingWorkerのdoInBackground()メソッド内のループ内でデータを取得し、publish/processを使用して各データ行をJTableのモデルにプッシュすることができます。この詳細については

、参照してください。Lesson: Concurrency in Swing

あなたはより具体的な助けが必要な場合は、あなたのMinimal, Complete, and Verifiable Example Programを作成し、掲載を検討してください。

+0

私は実際に問題になる可能性があると思います。私はそれを見て、速い答えに感謝します。 –