0

我有一个小应用程序可以非常快地找到“结果”(结果的种类在这里并不重要,但有时每秒超过 10 个),我想以类似表格的形式或类似的形式向用户显示它们。为此,我使用了一个摆动JTable(在 JFrame 内),将新结果作为新行插入,然后执行一个方法再次向下滚动。

    Object[] data = new Object[6];
    //fill data-array
    ((DefaultTableModel) resultTable.getModel()).addRow(data);
    resultTable.scrollRectToVisible(resultTable.getCellRect(resultTable.getRowCount(), 0, false));

这以某种方式完成了这项工作,但 Swing 在更新视图时似乎有点滞后,因此大多数时候(由于大量重绘)表格行似乎在窗口周围出现故障。

您对如何防止这种情况发生有任何想法吗?喜欢与一些摆动内部油漆锁同步/使用不同的方法来显示结果?

4

1 回答 1

2

如果没有相关代码,就无法判断出了什么问题,但我猜您正在处理需要在 Swing 事件线程上花费时间的处理(请显示更多内容,这样我们就不必猜测了)。如果是这样,解决方案是使用 SwingWorker 以允许您在后台线程上进行处理,同时仍更新 Swing 事件线程或 EDT 上的 Swing 状态。例如,您可以在 SwingWorkerdoInBackground()方法内的循环中获取数据,然后使用发布/处理将每一行数据推送到 JTable 的模型中。

有关这方面的更多信息,请参阅:课程:Swing 中的并发

如果您需要更具体的帮助,请考虑创建并发布您的最小、完整和可验证的示例程序

于 2016-09-04T20:01:44.587 回答