我有自定义渲染器的JTable,它在单元格中设置图标。
myTable.setDefaultRenderer(MyClass.class, new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(...) {
JLabel label = table.getTableCellRendererComponent(...);
label.setIcon(iconMap.get( object_type );
return label;
}
});
其中iconMap包含对不同图标的引用,而object_type是一种基于我希望图标显示在标签旁边的类型。结果表显示其中一列中的单元格,其中图标根据类型而不同。这是一种预期的行为。
接下来我想基于类型过滤行,我正在使用
TableRowSorter<> sorter = new TableRowSorter(myModel);
RowFilter<> filter = new RowFilter<>() {
public boolean include(...) {
if ( expected_type )
return true;
return false;
}
}
sorter.setRowFilter(filter);
myTable.setRowSorter(sorter);
所以基本上已经完成了这本书,没有什么令人惊叹的。
问题是显示单元格的图标,因为没有设置过滤器。
在没有过滤的情况下运行应用程序将显示两列,正确匹配对图标类型&lt; - &gt;对象类型
| A-type-icon | A-type-object |
| B-type-icon | B-type-object |
| B-type-icon | B-type-object |
| B-type-icon | B-type-object |
运行与筛选A类型对象的过滤器相同的
| A-type-icon | B-type-object |
| B-type-icon | B-type-object |
| B-type-icon | B-type-object |
看起来首先渲染对象而不是过滤对象。 我能做些什么(或我做错了什么)才能正确显示图标。