如何更新JTable以显示新DefaultTableModel中的数据?
问题根源
你对tblmodelMenu变量重新赋值的操作,仅修改了这个变量指向的对象,没有更新JTable实例内部持有的表格模型引用,表格依然绑定的是初始化时的旧模型,所以不会显示新数据。
解决方案1:直接更新JTable绑定的模型
修改updateTable方法,调用JTable的setModel()方法将新模型绑定到表格上:
void updateTable(Object[][] data, String[] columnHeadings) { // 新建模型后直接设置给表格 tblMenu.setModel(new DefaultTableModel(data, columnHeadings)); // 如果需要继续通过tblmodelMenu变量操作模型,同步更新变量指向 tblmodelMenu = (DefaultTableModel) tblMenu.getModel(); }
解决方案2:复用原有模型,避免新建对象
如果不需要完全重置模型结构,也可以直接清空原有模型的内容和列,再添加新数据,不用新建模型实例:
void updateTable(Object[][] data, String[] columnHeadings) { // 清空原有数据和列 tblmodelMenu.setRowCount(0); tblmodelMenu.setColumnCount(0); // 重新设置列 for (String heading : columnHeadings) { tblmodelMenu.addColumn(heading); } // 添加新行数据 for (Object[] row : data) { tblmodelMenu.addRow(row); } }
两种方案都能触发表格自动刷新,不需要额外调用重绘方法。
内容的提问来源于stack exchange,提问作者Nate Macdonald
相关产品推荐
相关产品推荐

