每次我将新数据集插入 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 中有数据时才有效。
添加回答
举报
0/150
提交
取消