逐行显示JTable [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逐行显示JTable [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

如何让我的JTable逐行显示我的数据?由于我的数据可能很大,最多有数千行,我想逐行显示,以便用户可以看到它被填充。

我尝试了许多不同的方式,如paintrepaintvalidate,所有的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
答案

我的表只显示最后添加所有内容后的数据

...

我的问题是在将数据添加到表中之前对数据进行预处理。我正在读取文件,转换其内容,然后将该内容添加到表中。

您正在对事件调度线程(EDT)进行处理,这会阻止GUI重新绘制,直到任务完成。

您需要使用单独的线程来预处理数据。这将允许GUI在将新数据添加到表模型时重新绘制自身。

最简单的方法是使用SwingWorker。 Swing worker允许您在单独的Thread中处理数据,然后“发布”数据,以便可以在GUI中显示。

阅读Concurrency in Swing上Swing教程中的部分,了解更多信息和工作示例。

以上是关于逐行显示JTable [重复]的主要内容,如果未能解决你的问题,请参考以下文章

隐藏JTable中的列[重复]

将 JScrollPane 滚动到 JTable 上的特定行 [重复]

Codeigniter 助手重复 HTML 代码片段

无法显示 JTable

在 JTable 中禁用用户编辑 [重复]

在 JAVA swing 中将数据库记录显示到 JTable