Java Swing中如何将已有JTable更新为新的JTable实例?
JTable排序后界面不更新的解决方案
问题原因
你重新创建了JTable实例并赋值给变量j,但界面上显示的是最初添加到容器中的旧JTable对象,变量指向的改变不会同步到界面组件,所以看不到更新效果。
正确代码实现
直接更新原有JTable的模型即可,无需创建新的JTable实例:
// 将二维ArrayList转换为JTable可用的二维数组 String[][] sortedData = tempUsersToAList.stream().map(u -> u.toArray(new String[0])).toArray(String[][]::new); DefaultTableModel sortedModel = new DefaultTableModel(sortedData, columnNames); // 关键:调用setModel更新原有表格的模型,而非创建新JTable j.setModel(sortedModel);
可选优化方案
如果原有表格使用的是DefaultTableModel,可以复用原有模型,避免重复创建对象:
// 获取原有表格模型 DefaultTableModel existingModel = (DefaultTableModel) j.getModel(); // 清空原有数据行 existingModel.setRowCount(0); // 批量添加排序后的数据 for (String[] rowData : sortedData) { existingModel.addRow(rowData); }
内容的提问来源于stack exchange,提问作者Soccerball123
相关产品推荐
相关产品推荐

