我正在使用实现 TableCellRenderer 并为每一行显示 JTextArea(而不是 JLabel)的自定义单元格渲染器。我基本上用我的方法覆盖了 getTableCellRendererComponent(...) 方法,它每行做了一些额外的计算。每次表更新时,这些计算只需进行一次。由于每次鼠标移动都会调用 getTableCellRendererComponent 方法,因此会出现延迟。所以我想我应该阻止调用 getTableCellRendererComponent 以避免滞后。
注意事项:
1)我的表只有 1 列,没有标题。
2) 我的数据是静态的,通过实现 AbstractTableModel 的自定义 tablemodel 类中的 getValueAt(int row, int column) 方法从 ArrayList 中读取。
3)我不需要监视鼠标运动事件。
4)我不希望有太多数据,所以我可能想一次显示整个表格或完全缓存它。
5)大多数延迟是由于每次从getTableCellRendererComponent返回时设置文本造成的,因为有些行使用从右到左的字符,而RTL文本需要额外的时间来渲染。