[英]Sorting numbers in JTable
请,有人能看到为什么此代码仍然拒绝使用我的比较器吗? 这是所有与userTable对象有关的代码+我在那里有鼠标和键监听器,但我认为它不会影响排序。
private TableRowSorter trs;
public constructor() {
initComponents();
...
trs = new TableRowSorter<>(userTable.getModel());
class IntComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
System.out.println("comparing");
Integer int1 = (Integer) o1;
Integer int2 = (Integer) o2;
return int1.compareTo(int2);
}
}
trs.setComparator(0, new IntComparator());
userTable.setRowSorter(trs);
...
}
private void initComponents() {
...
userTable = new javax.swing.JTable(){
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
return renderer;
}
};
...
userTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"ID", "count", "null"
}
) {
Class[] types = new Class [] {
java.lang.Integer.class, java.lang.Integer.class, java.lang.Object.class
};
boolean[] canEdit = new boolean [] {
false, false, false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
}
它一直在进行RADIX排序,并且消息“ comparing”从未显示。 谢谢。
问题是,该表是使用JDBS从数据库填充的,在这里我没有设置适当的数据类型。 表列本身设置为整数或浮点数,但将从DB读取的数据视为字符串。
switch (rs.getMetaData().getColumnType(i + 1)) {
case 93: //DATE
rowData[i] = rs.getDate(i + 1).toString() + "> " + rs.getTime(i + 1);
break;
default:
rowData[i] = rs.getString(i + 1);
break;
}
新代码如下所示。
switch (rs.getMetaData().getColumnType(i + 1)) {
case 93:
rowData[i] = rs.getDate(i + 1).toString() + "> " + rs.getTime(i + 1);
break;
case 4:
rowData[i] = rs.getInt(i + 1);
break;
case -5:
rowData[i] = rs.getLong(i + 1);
break;
case 7:
rowData[i] = rs.getFloat(i + 1);
break;
default:
rowData[i] = rs.getString(i + 1);
break;
}
Jtable的netbeans中的复选框具有默认的行排序器:D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.