猿问

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

每次我将新数据集插入 arrayList 时加载/刷新 jTable


已经尝试了我发表评论的那些行,但仍然没有任何改变。考虑将这些数据添加到 arrayList 是在单独的类中执行的。所以在这里,Action 在 jButton 中执行,所以每次我从 jTextfields 添加一组数据并将其作为对象存储到 arrayList 时,只有第一组我插入的列和行arrayList 是 jTable 中唯一显示的数据。虽然我点击两次jButton后插入的第二组数据保存到arrayList,但jTable甚至没有刷新或加载我插入的新数据。任何帮助将不胜感激


//BUTTON ACTION PERFORMED

DefaultTableModel 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<>();

 // }

 // ------------------------


倚天杖
浏览 147回答 1
1回答

江户川乱折腾

已经尝试了我发表评论的那些行,但仍然没有任何改变。好吧,从非常简单的事情开始。在 ActionListener 中添加两行:DefaultTableModel tableModel = (DefaultTableModel) MyJTable.getModel();&nbsp;tableModel.setRowCount(0);&nbsp;如果表中的数据没有发生任何变化,则意味着您没有对框架上可见的表的引用。所以你需要解决这个问题。表中的数据是否清楚?如果是这样,这是一个好兆头,因为这意味着您的代码正在引用已添加到框架的 JTable 的 TableModel。所以现在您可以从 ArrayList 添加数据。基本逻辑是:System.out.println( data.size() ); // to verify you actually have data in the Listfor (Object[] row: data)&nbsp; &nbsp; model.addRow( row );就是这样。无需创建新的 TableModel。无需创建二维数组。您将简单地遍历 ArrayList,一次将一行数据添加到模型中。然后表格将自动重新绘制()本身。当然,这只有在 ArrayList 中有数据时才有效。
随时随地看视频慕课网APP

相关分类

Java
我要回答