- Not that you are simply mistaken, and do not reinvent the wheels by adding one comparator integrated into the API with another comparator, other methods implement RowFilter, an example for RowFilter




from code
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public class TableBoolean extends JFrame { private final static String LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static final long serialVersionUID = 1L; private JTable table; private DefaultTableModel model; public TableBoolean() { Object[][] data = {{"A", new Boolean(false), 2, 1}, {"B", new Boolean(true), 1, 3}, {"A", new Boolean(false), 1, 5}, {"B", new Boolean(true), 3, 1}, {"A", new Boolean(false), 2, 3}, {"B", new Boolean(true), 2, 4}, {"A", new Boolean(false), 5, 2}, {"B", new Boolean(true), 7, 1}}; String[] columnNames = {"String", "Boolean", "Integer", "Integer"}; model = new DefaultTableModel(data, columnNames) { private static final long serialVersionUID = 1L; @Override public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } @Override public boolean isCellEditable(int row, int column) { return true; } }; table = new JTable(model); TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel()); table.setRowSorter(sorter); table.setPreferredScrollableViewportSize(table.getPreferredSize()); JScrollPane scrollPane = new JScrollPane(table); add(scrollPane); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { TableBoolean frame = new TableBoolean(); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }); } }
source share