【发布时间】:2011-05-31 03:31:00
【问题描述】:
//新手问题
我有一个带有几乎基本单元格渲染器的 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;
}
【问题讨论】:
-
这是不正确的行为。你能创建一个独立的代码示例来演示这一点吗?它将帮助我们解决此问题。
-
@Steve 我认为这将是太多的代码。我刚刚发现我有另一个渲染器,用于表格中的特定单元格。难道是他们互相开火?
-
它可以是任何东西。心理调试很难。只是一个创建 JFrame、添加表格、设置单元格渲染器的主要方法,就像您已经展示的那样 - 并且有同样的问题。
-
请注意,当你的表被排序时,你会从你的模型中检索到错误的
Filter。作为参数传递的row在“表视图坐标”中,而不是在“模型坐标”中
标签: java swing jtable tablecellrenderer