每次我将新数据集插入arrayList时,加载/刷新jTable
已经尝试过我在评论中添加的内容,但是仍然没有任何改变。考虑到将这些数据添加到arrayList是在单独的类中执行的,所以在这里,操作是在jButton中执行的,因此每次我从jTextfields添加数据集并将其存储为Object到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<>();
// }
// ------------------------
答案 0 :(得分:0)
已经尝试过我在评论中添加的内容,但是仍然没有任何改变。
从一些非常简单的事情开始。
在您的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。无需创建2D数组。您将简单地遍历ArrayList,一次向模型添加一行数据。然后该表将自动repaint()本身。
当然,只有在ArrayList中有数据时,这才起作用。