从DefaultTableModel的文档中:
警告:DefaultTableModel返回Object的列类。当将DefaultTableModel与TableRowSorter一起使用时,这将导致toString的广泛使用,这对于非String数据类型而言是昂贵的。如果将DefaultTableModel与TableRowSorter一起使用,则强烈建议重写getColumnClass以返回适当的类型。
您需要像这样重写表模型的getColumnClass:
DefaultTableModel model = new DefaultTableModel(new String[] {"X", "Y", }, 0){ @Override public Class<?> getColumnClass(int column) { Class<?> returnValue; if ((column >= 0) && (column < getColumnCount())) { returnValue = getValueAt(0, column).getClass(); } else { returnValue = Object.class; } return returnValue; }; };在您的情况下,它是
Integer.toString()对整数进行比较,因此您会看到错误的顺序。通过重写
getColumnClass()为返回
Integer类型,您将获得整数与它们的值的比较。



