Reputation: 1585
We have a simple project where we read data from a socket and we want to populate a table with the coming data, but we can't find a way to add rows to a yet created JTable
object, we can only find how to add rows at creation time of the table.
Is it possible to add rows dynamically to a JTable
, or there is a better alternative object to deal with this way of showing data?
EDIT: Thanks a lot for your answers.
All three of them look very promising, but I have to choose only one and I think the best is Guillaume's.
Upvotes: 14
Views: 32191
Reputation: 5798
If you use the default table model for a JTable then you can add rows with following code
if ( dest+1 < table.getRowCount()-1 )
( (DefaultTableModel) table.getModel() ).insertRow(dest+1, getValuesForNewRow());
else
( (DefaultTableModel) table.getModel() ).addRow(getValuesForNewRow());
Upvotes: 11
Reputation: 18875
You should create a custom TableModel
. A JTable
doesn't actually store the rows, it always delegates that to a TableModel
. To help you implementing it, you should make use of AbstractTableModel
. Don't forget to call fireTableRowsInserted()
every time you add rows. For better performances if you add a lot of rows, try to batch the updates and add many rows at a time.
Upvotes: 12
Reputation: 182850
Once you start dynamically adding and removing elements from a JTable, you really need to start using a TableModel.
See the Java Tutorial for more details.
Upvotes: 6