我有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];
}
}
这使我能够按升序和降序自动对日期和整数进行排序。
答案 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
允许在表中显示正确的字符串。整数值用于比较(当常量的顺序正确时,它不是隐式需要的。)