Java 如何加载或刷新jTable';每次我向ArrayList对象添加新数据时
每次我向arrayList插入新的数据集时加载/刷新jTable 我已经试过了我在评论中的那些台词,但仍然没有任何改变。考虑到将这些数据添加到ARAYLIST是在单独的类中执行的。因此,在JButt中执行的操作,因此每当我从JTrrEnter添加一组数据并将其作为对象存储到ARARYLIST中时,只有插入到ARARYLIST中的第一组列和行才是JTALE中唯一显示的数据。尽管我在两次单击jButton后插入的第二组数据保存到了arrayList,但jTable甚至没有刷新或加载我插入的新数据。任何帮助都将不胜感激Java 如何加载或刷新jTable';每次我向ArrayList对象添加新数据时,java,swing,jtable,Java,Swing,Jtable,每次我向arrayList插入新的数据集时加载/刷新jTable 我已经试过了我在评论中的那些台词,但仍然没有任何改变。考虑到将这些数据添加到ARAYLIST是在单独的类中执行的。因此,在JButt中执行的操作,因此每当我从JTrrEnter添加一组数据并将其作为对象存储到ARARYLIST中时,只有插入到ARARYLIST中的第一组列和行才是JTALE中唯一显示的数据。尽管我在两次单击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<>();
// }
// ------------------------
//执行了按钮操作
DefaultTableModel tableModel=(DefaultTableModel)MyJTable.getModel();
tableModel.fireTableDataChanged();
//tableModel.setRowCount(0);
//tableModel.repaint();
//int rowCount=tableModel.getRowCount();
//对于(int i=rowCount-1;i>=0;i--){
//tableModel.removeRow(i);
//}
Object[][]displayOnTable=新对象[Data.Data.size()][4];
对于(int x=0;x
我已经试过了我在评论中的那些台词,但仍然没有任何改变
我们从简单的事情开始
在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中有数据的情况下,这才有效。请澄清您的问题和代码,因为它有点混乱且难以阅读。最好创建并发布一个有效的程序,以便我们自己测试您的代码。和可以帮助您做到这一点。旁注:您无需对DefaultTableModel对象调用
.fireTableDataChanged()
,因为该对象在其数据发生更改时会在内部进行调用,这就是它的工作原理。模型本身负责通知侦听器更改。