按特定顺序对包含字符串的JTable列进行排序

时间:2016-04-01 03:45:22

标签: java swing sorting

我有JTable包含6列不同的值。 其中一列称为“Priority”并包含不同的字符串:

 ("Critical", "High", "Medium", "Low", "Not a priority"). 

默认排序是按字母顺序排列的,并且不适用于我希望将优先级从低到高或相反列出的情况。

我一直在关注Comparators和enums,但还没有弄清楚如何让它工作。

也使用这个模型:

public class TableModel extends DefaultTableModel{ 
     final Class<?>[] columnClasses = new Class<?>[] {Integer.class, String.class, Date.class, String.class, String.class, String.class}; 
     @Override 
     public Class<?> getColumnClass(int columnIndex) { 
           return columnClasses[columnIndex]; 
     }
}

这使我能够按升序和降序自动对日期和整数进行排序。

1 个答案:

答案 0 :(得分:2)

比较器和枚举的一个小例子

public enum Priority implements Comparable<Priority> {
    CRITICAL("Critical", 10), HIGH("High", 8), MEDIUM("Medium", 5), LOW("Low", 3), NONE("Not a priority", 0);
    String title;
    int value;

    public Priority(String aTitle, int aValue) {
        title = aTitle;
        value = aValue;
    }
    public int compareTo(Priority another) {
        return Integer.valueOf(value).compareTo(Integer.valueOf(another.value));
    }
    public String toString() {
        return title;
    }
}

您可以使用枚举常量替换模型中的字符串值。方法toString允许在表中显示正确的字符串。整数值用于比较(当常量的顺序正确时,它不是隐式需要的。)