其他分享
首页 > 其他分享> > 为什么我的JTable CellRenderer一直运行?

为什么我的JTable CellRenderer一直运行?

作者:互联网

//新手问题

我有一个带有几乎基本单元格渲染器的JTable(它以不同的颜色显示行).
我注意到我的单元格渲染器一直在为屏幕上显示的行运行,即使我对表格不做任何事情.

那应该是这样吗?它不应该一次渲染每个单元格吗?
我怎样才能使其停止,而仅在更改时重新计算?

public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus, int row, int column) {

   log.debug("Building cell : " + row + "," + column);

   Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

   Filter filter = (Filter)table.getModel().getValueAt(row, Column.CLASSIFICATION.getIndex());
   comp.setBackground(filter.getColor());
   return comp;

  }

解决方法:

我对包含大量数据的JTables进行了很多工作.超过99.9%的Java程序员通常进行的操作.您需要了解一件事:默认情况下,会产生大量的浪费,并且通常会执行不必​​要的操作.

如果您追求快速高效的JTables,那么有关于此主题的权威Sun文章:

“圣诞树应用程序,如何创建性能良好的频繁更新的JTable”

注意标题中的“ Performance well”,因为默认情况下,JTable性能非常好,非常可悲:

Original Link (Sun)

Current link (Oracle)

Archived Version:

在实现了本文建议的两种或三种技术之后,您将注意到JTable呈现中惊人的加速,并且您会发现生成的垃圾少得多(因此,GC的运行频率降低了).

标签:swing,jtable,tablecellrenderer,java
来源: https://codeday.me/bug/20191023/1914438.html