已经存在jtable,我需要动态添加一列,然后为该列设置表格单元格渲染器,单元格渲染器是带有图标的jlabel。我已经完成了。
我的问题是:现在我需要根据表格单元格渲染器中使用的不同图标对该列进行排序,那么如何做到这一点呢?谢谢。
有相关代码:
JTable table;// the table is already existed, I cannot change it
TableColumn column = new TableColumn();
column.setHeaderValue("Icon");
column.setCellRenderer(new IconCellRenderer());
table.addColumn(column);
public class IconCellRenderer extends DefaultTableCellRenderer
{
private static final long serialVersionUID = 1L;
public IconCellRenderer()
{
super();
}
@Override
public Component getTableCellRendererComponent(JTable pTable, Object pValue,
boolean pIsSelected, boolean pHasFocus, int pRow, int pColumn)
{
JLabel label = new JLabel();
if (checkCondition(..))
{
label.setIcon(iconOne);
}
else
{
label.setIcon(iconTwo));
}
label.setHorizontalAlignment(SwingConstants.CENTER);
return label;
}
}
答案 0 :(得分:1)
为此,您可以使用TableRowSorter
,并将Comparator
设置为所需的列。在该比较器中,您可以比较单元格的值并对其进行排序:
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
sorter.setComparator(0, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
return 0;
}
});
table.setRowSorter(sorter);
table
是您的JTable
,model
是您桌子的型号。
详细了解JTable
中的sorting。