如何让我的JTable
逐行显示我的数据?由于我的数据量很大,最多有数千行,我想逐行显示,以便用户可以看到它被填充。
我尝试了很多不同的方法,例如paint
,repaint
,validate
,所有model.fire
......等等,但我的表格只显示了以后的数据一切都已添加到最后。我是如何做这个方法的一个例子:
public void updateTableRowByRow(String row) {
// length of row always equals cols
int cols = 16;
int i = 0;
DefaultTableModel model = (DefaultTableModel) gui.myTable.getModel();
Vector<String> rowData = new Vector<String>();
for (int c = 0; c < cols; c++) {
rowData.add(String.valueOf(row.charAt(i++)));
}
model.addRow(rowData);
// tried many things here to get it to refresh but nothing worked
}
在我调用此方法之前,我会清除表格:
DefaultTableModel model = (DefaultTableModel) gui.myTable.getModel();
model.setRowCount(0); // delete all
答案 0 :(得分:0)
我的表格仅显示最后添加所有内容后的数据
...
我的问题是在将数据添加到表中之前对数据进行预处理。我正在读取一个文件,转换其内容,然后将该内容添加到表中。
您正在对事件调度线程(EDT)进行处理,这会阻止GUI重新绘制,直到任务完成。
您需要使用单独的线程来预处理数据。这将允许GUI在将新数据添加到表模型时重新绘制自己。
最简单的方法是使用SwingWorker。 Swing工作者允许您在单独的线程中处理数据,然后发布&#34;数据,以便它可以在GUI中显示。
阅读Concurrency in Swing上Swing教程中的部分,了解更多信息和工作示例。