为了账号安全,请及时绑定邮箱和手机立即绑定

每次向 ArrayList 对象添加新数据时如何加载或刷新 jTable 的数据

每次向 ArrayList 对象添加新数据时如何加载或刷新 jTable 的数据

倚天杖 2022-04-28 17:02:10
每次我将新数据集插入 arrayList 时加载/刷新 jTable已经尝试了我发表评论的那些行,但仍然没有任何改变。考虑将这些数据添加到 arrayList 是在单独的类中执行的。所以在这里,Action 在 jButton 中执行,所以每次我从 jTextfields 添加一组数据并将其作为对象存储到 arrayList 时,只有第一组我插入的列和行arrayList 是 jTable 中唯一显示的数据。虽然我点击两次jButton后插入的第二组数据保存到arrayList,但jTable甚至没有刷新或加载我插入的新数据。任何帮助将不胜感激//BUTTON ACTION PERFORMEDDefaultTableModel tableModel = (DefaultTableModel) MyJTable.getModel();  tableModel.fireTableDataChanged();//tableModel.setRowCount(0); //tableModel.repaint(); //int rowCount = tableModel.getRowCount();//for(int i = rowCount -1; i >= 0; i--){//tableModel.removeRow(i);//}Object[][] displayOnTable = new Object[Data.data.size()][4];for(int x=0; x < Data.data.size(); x++){ displayOnTable[x] = Data.data.get(x);      } MyJTable.setModel(new javax.swing.table.DefaultTableModel( disp, new String [] { "ID", "Name", "Gender", "Age" } ));           // --- Declared in Separated class---- //public class Data { //    public static List<Object[]> data = new ArrayList<>(); // } // ------------------------
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

已经尝试了我发表评论的那些行,但仍然没有任何改变。


好吧,从非常简单的事情开始。


在 ActionListener 中添加两行:


DefaultTableModel tableModel = (DefaultTableModel) MyJTable.getModel(); 

tableModel.setRowCount(0); 

如果表中的数据没有发生任何变化,则意味着您没有对框架上可见的表的引用。所以你需要解决这个问题。


表中的数据是否清楚?如果是这样,这是一个好兆头,因为这意味着您的代码正在引用已添加到框架的 JTable 的 TableModel。


所以现在您可以从 ArrayList 添加数据。


基本逻辑是:


System.out.println( data.size() ); // to verify you actually have data in the List


for (Object[] row: data)

    model.addRow( row );

就是这样。无需创建新的 TableModel。无需创建二维数组。您将简单地遍历 ArrayList,一次将一行数据添加到模型中。然后表格将自动重新绘制()本身。


当然,这只有在 ArrayList 中有数据时才有效。


查看完整回答
反对 回复 2022-04-28
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信