Sorting integer in jtable

184 Views Asked by At

when i click the 'Price' radiobutton it sorts the Price Row but in this order

  • 1
  • 11
  • 12
  • 13
  • 2
  • 21
  • 200
  • 3
  • 32
  • 300

how can i fix it? im still new in java. please help me. thanks. :D

rdbtnNewRadioButton_2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            DefaultRowSorter sorter = ((DefaultRowSorter)table.getRowSorter());
            List <RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
            sortKeys.add(new RowSorter.SortKey(4, SortOrder.ASCENDING));
            sorter.setSortKeys(sortKeys); 

        }
    });
3

There are 3 best solutions below

0
On BEST ANSWER
  • override getColumnClass in your XxxTableModel, default class is String, the your result from RowSorter is correct

  • use Integer.Class

1
On

Convert your data column to an integer type in order to have the correct order.

SELECT
    ...,
    CAST(YourColumnName as INT) as YourColumnName
    ...
FROM...
4
On

Write your own comparator and then

sorter.setComparator(int column, Comparator<?> comparator)

refer this Why does my JTable sort an integer column incorrectly?