如何只对 JTable 中指定的列进行排序?

How to sort only specified columns in JTable?

我有一个 table 列 |名称 |开始|完成 |时间 |地点 |点 | 并且我想在按时间排序 table 时将地点和点分开。有没有办法在不创建两个 table 的情况下做到这一点?

所以,我想到了使用 TableCellRenderer for Place and Points columns as Manu suggested by sharing this link

首先,我创建了 CustomTableCellRenderer 并使用此方法设置值:

public class CustomCellRenderer extends JLabel implements TableCellRenderer{

    ...

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

        if(column==this.columnPlace){
            // set Place
         setText(Integer.toString(row+1));
        }
        else{
         // set Points depending on competitorsCount and row
            setText(Integer.toString(points[competitorsCount-1][row]));
        }
        return this;
    }
}

然后我为这些列设置了这个自定义渲染器:

    CustomCellRenderer customRenderer = new CustomCellRenderer(competitorsCount);
    customRenderer.setHorizontalAlignment(JLabel.CENTER);
    tableColumnModel.getColumn(columnPlace).setCellRenderer(customRenderer);
    tableColumnModel.getColumn(columnPoints).setCellRenderer(customRenderer);