Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Try this little example.</p> <p><img src="https://i.stack.imgur.com/RLcug.png" alt="Sorted 1st column"></p> <h2>The better way</h2> <p>As suggested by Kleopatra, defining a column class relevant for each, will be enough to get the data to be sorted correctly.</p> <pre><code>import javax.swing.*; import javax.swing.table.*; import java.util.Comparator; class TableSorting { public static void main(String[] args) { Object[][] data = { {new Integer(1), "Don't Let Go", new Integer(179)}, {new Integer(2), "Photograph", new Integer(29)}, {new Integer(3), "Hash Pipe", new Integer(186)}, {new Integer(4), "Island In The Sun", new Integer(200)}, {new Integer(5), "Crab", new Integer(154)}, {new Integer(6), "Knock-Down Drag-Out", new Integer(128)}, {new Integer(7), "Smile", new Integer(158)}, {new Integer(8), "Simple Pages", new Integer(176)}, {new Integer(9), "Glorious Day", new Integer(160)}, {new Integer(10), "O Girlfriend", new Integer(230)} }; Object[] columns = {"Track #", "Title", "Length"}; DefaultTableModel model = new DefaultTableModel(data,columns) { @Override public Class getColumnClass(int column) { switch (column) { case 0: return Integer.class; case 1: return String.class; case 2: return Integer.class; default: return String.class; } } }; JTable table = new JTable(model); JScrollPane scroll = new JScrollPane(table); table.setAutoCreateRowSorter(true); JOptionPane.showMessageDialog(null, scroll); } } </code></pre> <h2>Original, using a comparator</h2> <pre><code>import javax.swing.*; import javax.swing.table.*; import java.util.Comparator; class TableSorting { public static void main(String[] args) { Object[][] data = { {new Integer(1), "Don't Let Go", new Integer(179)}, {new Integer(2), "Photograph", new Integer(29)}, {new Integer(3), "Hash Pipe", new Integer(186)}, {new Integer(4), "Island In The Sun", new Integer(200)}, {new Integer(5), "Crab", new Integer(154)}, {new Integer(6), "Knock-Down Drag-Out", new Integer(128)}, {new Integer(7), "Smile", new Integer(158)}, {new Integer(8), "Simple Pages", new Integer(176)}, {new Integer(9), "Glorious Day", new Integer(160)}, {new Integer(10), "O Girlfriend", new Integer(230)} }; Object[] columns = {"Track #", "Title", "Length"}; JTable table = new JTable(data, columns); JScrollPane scroll = new JScrollPane(table); DefaultTableModel model = new DefaultTableModel(data,columns); TableRowSorter trs = new TableRowSorter(model); class IntComparator implements Comparator { public int compare(Object o1, Object o2) { Integer int1 = (Integer)o1; Integer int2 = (Integer)o2; return int1.compareTo(int2); } public boolean equals(Object o2) { return this.equals(o2); } } trs.setComparator(0, new IntComparator()); table.setRowSorter(trs); scroll = new JScrollPane(table); table.setAutoCreateRowSorter(false); JOptionPane.showMessageDialog(null, scroll); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload