TableCellRenderer を実装し、各行に (JLabel ではなく) JTextArea を表示するカスタム セル レンダラーを使用しています。私は基本的に、行ごとに追加の計算を行う getTableCellRendererComponent(...) メソッドをオーバーライドしています。これらの計算は、テーブルの更新ごとに 1 回だけ実行する必要があります。マウスを動かすたびに getTableCellRendererComponent メソッドが呼び出されるため、ラグが発生します。したがって、遅延を回避するために getTableCellRendererComponent が呼び出されないようにする必要があると考えました。
考慮事項:
1) 私のテーブルには 1 列しかなく、ヘッダーがありません。
2) 私のデータは静的で、AbstractTableModel を実装するカスタム テーブルモデル クラスの getValueAt(int row, int column) メソッドによって ArrayList から読み取られます。
3) マウス モーション イベントを監視する必要はありません。
4) 私は多くのデータを期待していないので、テーブル全体を一度に表示するか、完全にキャッシュしたいかもしれません。
5) ほとんどの遅延は、getTableCellRendererComponent から戻るたびにテキストを設定することによって発生します。これは、一部の行が右から左への文字を使用しており、RTL テキストのレンダリングに余分な時間が必要なためです。