找出哪一行是排序的,以及它是升序还是降序

时间:2015-02-02 18:33:31

标签: java swing sorting jtable

我通过扩展DefaultTableCellHeaderRenderer

创建了自定义表头
public class TableHeaderRenderer extends DefaultTableCellHeaderRenderer
{
    private JPanel panel;
    private JLabel label;

    public TableHeaderRenderer()
    {
        panel = new JPanel();
        label = new JLabel(" ");
        label.setHorizontalAlignment(JLabel.CENTER);
        panel.add(label);
    }

    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        label.setText(String.valueOf(value));
        label.setBorder(BorderFactory.createMatteBorder(0, (column == 0 ? 1 : 0), 1, 1, Color.Red));
        return panel;
    }
}

我想要做的是显示在许多其他表格中显示的已排序列的小向上或向下箭头。
我试图找出哪个列是按哪个顺序排序的,但它们没有产生任何结果。

有人可以建议我这样做吗?

1 个答案:

答案 0 :(得分:0)

我通过执行以下操作显示了箭头。

我替换了

label_.setText(String.valueOf(value));

if (table.getRowSorter() != null && table.getRowSorter().getSortKeys() != null && !table.getRowSorter().getSortKeys().isEmpty() &&
        table.getRowSorter().getSortKeys().get(0).getColumn() == column)
{
    if (table.getRowSorter().getSortKeys().get(0).getSortOrder() == SortOrder.ASCENDING)
    {
        label_.setText(String.valueOf(value) + "  \u25b2");
    }
    else if (table.getRowSorter().getSortKeys().get(0).getSortOrder() == SortOrder.DESCENDING)
    {
        label_.setText(String.valueOf(value) + "  \u25bc");
    }
}
else
{
    label_.setText(String.valueOf(value));
}

箭头显示出应有的效果。