Java 按特定顺序对包含字符串的JTable列进行排序
我有一个Java 按特定顺序对包含字符串的JTable列进行排序,java,swing,sorting,Java,Swing,Sorting,我有一个JTable,包含6列不同的值。 其中一列称为“优先级”,包含不同的字符串: ("Critical", "High", "Medium", "Low", "Not a priority"). 默认排序是按字母顺序排列的,不适用于我希望从低到高或相反顺序列出优先级的情况 我一直在研究比较器和枚举,但还没有弄清楚如何使其工作 也使用此模型: public class TableModel extends DefaultTableModel{ final Class<?
JTable
,包含6列不同的值。
其中一列称为“优先级”
,包含不同的字符串:
("Critical", "High", "Medium", "Low", "Not a priority").
默认排序是按字母顺序排列的,不适用于我希望从低到高或相反顺序列出优先级的情况
我一直在研究比较器和枚举,但还没有弄清楚如何使其工作
也使用此模型:
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];
}
}
公共类TableModel扩展了DefaultTableModel{
最终类[]columnClasses=新类[]{Integer.Class,String.Class,Date.Class,String.Class,String.Class,String.Class};
@凌驾
公共类getColumnClass(int columnIndex){
返回columnClasses[columnIndex];
}
}
这使我能够自动按升序和降序对日期和整数进行排序。比较器和枚举的一个小示例
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;
}
}
公共枚举优先级实现可比较{
关键(“关键”,10)、高(“高”,8)、中(“中”,5)、低(“低”,3)、无(“非优先”,0);
字符串标题;
int值;
公共优先级(字符串aTitle、int aValue){
title=aTitle;
价值=价值;
}
公共整数比较(其他优先级){
返回Integer.valueOf(value.compareTo(Integer.valueOf(另一个.value));
}
公共字符串toString(){
返回标题;
}
}
可以用枚举常量替换模型中的字符串值。方法
toString
允许在表中显示正确的字符串。整数值用于比较(当常量的顺序正确时,它不是隐式要求的)。比较器和枚举的一个小示例
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;
}
}
公共枚举优先级实现可比较{
关键(“关键”,10)、高(“高”,8)、中(“中”,5)、低(“低”,3)、无(“非优先”,0);
字符串标题;
int值;
公共优先级(字符串aTitle、int aValue){
title=aTitle;
价值=价值;
}
公共整数比较(其他优先级){
返回Integer.valueOf(value.compareTo(Integer.valueOf(另一个.value));
}
公共字符串toString(){
返回标题;
}
}
可以用枚举常量替换模型中的字符串值。方法toString
允许在表中显示正确的字符串。整数值用于比较(当常量的顺序正确时,它不是隐式要求的)。首先查看,这样您可以在模型中有一个值,并对视图进行不同的渲染。我还可以更仔细地查看,例如,使用一个enum
,它保存一个值,您可以根据该值进行排序,并使用一个自定义排序器对列进行排序。首先,您可以查看模型中的一个值,然后对视图进行不同的渲染。我还可以更仔细地查看,例如,使用一个enum
,它保存一个可以排序的值,并使用自定义排序器以这种方式对列进行排序