我正在使用實現TableCellRenderer的自定義單元格渲染器,併爲每行顯示JTextArea(而不是JLabel)。我基本上覆蓋getTableCellRendererComponent(...)方法與我的每行進行一些額外的計算。這些計算必須在每次表更新時進行一次。由於每次移動鼠標都會調用getTableCellRendererComponent方法,因此會發生滯後。所以我想我應該防止調用getTableCellRendererComponent來避免滯後。減少getTableCellRendererComponent調用的次數
考慮:
1)我的表只有1列,並沒有報頭。
2)我的數據是靜態的,通過實現AbstractTableModel的自定義表模型類中的getValueAt(int row,int column)方法從ArrayList中讀取。
3)我不需要監視鼠標移動事件。
4)我不期望太多的數據,所以我可能想要一次顯示整個表格或完全緩存它。
5)大多數延遲是由於每次從getTableCellRendererComponent返回時設置文本引起的,因爲某些行正在使用從右到左的字符,而RTL文本需要額外的時間才能呈現。
只是爲了強調@Robin的答案:從來沒有在getXXRendererComponent中做過任何計算。通話頻率很高,完全不受您的控制。 – kleopatra
@kleopatra k明白了。但是,我如何控制內部操作呢?像setText和setFont方法一樣,我在getCellRendererComponent方法中使用(用於我的JTextArea單元格)。 –
配置_renderer_很好..聽起來我誤解了你的意思是「計算」。時間爲SSCEE(或至少是渲染器的代碼:-) – kleopatra