我已经搜索了很长时间,所以我决定最后在这里写。我在jTable中排序数字(整数,双精度,短路)有问题,我已经覆盖了getColumnClass方法,但它仍然没有正确排序数字。
这是我做的:
List<Class> types = new ArrayList();
types.add(String.class);
types.add(String.class);
types.add(String.class);
for (int s = 0; s < sloupce.size(); s++) {
try {
Statement st = log.getSt();
ResultSet r = st.executeQuery("SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '" + table + "' AND COLUMN_NAME = '" + sloupce.get(s) + "'");
if (r.next()) {
String typ = r.getString("DATA_TYPE");
if (!typ.equals("varchar")) {
types.add(Integer.class);
} else {
types.add(String.class);
}
}
} catch (Exception e) { System.out.println(e.toString()); }
}
DefaultTableModel tm = new DefaultTableModel(new Object[0][], new String[] {" first column ", " second ", " another "}) {
@Override
public Class getColumnClass(int columnIndex) {
return types.get(columnIndex);
}
};
然后我用类型数组填充类型数组,当我测试getColumnClass方法时,它确实返回了正确的类(java.lang.Integer),但它仍然错误地对值进行排序。
//更新: 我代表MySQL DB中的一个表,所以我已经更新了我的确切代码。我是这样做的。