I have a jTable
which loads data from a DB query
This load produces 32 results, thus 32 rows in the TableModel
With myTable.getRowCount()
When using a custom RowSorter (or any RowSorter for that matter), one must take care to make sure the models of the sorter and the table always match. As specified in the setRowSorter
Javadoc:
If the underlying model of the RowSorter differs from that of this JTable undefined behavior will result.
The setModel
method of the JTable will not update the row sorter, unless you are using a default automatic one (by setting the autoCreateRowSorter
flag).
As such, you should
setAutoCreateRowSorter(true)
on your table and not a custom one,Can you post a verifiable code of yours? because i tried with the following code and the model changed without any issues.
public static void main(String[] args) throws InterruptedException {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultTableModel model = new DefaultTableModel(
new Object[][] { { "some", "text" }, { "any", "text" },
{ "even", "more" }, { "text", "strings" },
{ "and", "other" }, { "text", "values" } },
new Object[] { "Column 1", "Column 2" });
String[] columnNames= {null};
DefaultTableModel model1 = new DefaultTableModel(null,columnNames);
model1.setRowCount(0);
JTable table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
Thread.sleep(5000);
table.setModel(model1);
}