首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jpanel中快速添加大量的jlabels

问在jpanel中快速添加大量的jlabels
EN

Stack Overflow用户
提问于 2013-12-03 19:12:16
回答 2查看 143关注 0票数 1

嗨,我正在使用java来制作从mysql获取数据的java应用程序,然后将每一行放入JLabel并将其添加到特定的Jpanel中。

我的问题是,当我获取超过4k行时,应用程序需要0.3分钟才能完成上述过程,并且随着行数的增加,时间也会增加。

我计算了mysql的延迟,每60k行的延迟为20.26秒,当我计算应用程序时,对于相同数量的行,几乎是2.5分钟。

所以我的问题是,有什么东西会加速我的应用程序(mysql,java)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-03 19:17:49

从mysql中获取数据,然后将每一行放入JLabel,并将其添加到特定的Jpanel中。

  • 使用JTable,搜索ResultSetTableModel,TableFromDatabase

我的问题是,当我获取超过4k行时,应用程序需要0.3分钟才能完成上述过程,并且随着行数的增加,时间也会增加。

  • 4k超出了人类在标准工作时间内使用一组数据的能力。

我计算了mysql的延迟,每60k行的延迟为20.26秒,当我计算应用程序时,对于相同数量的行,几乎是2.5分钟。

  • 创建一个批处理逻辑,从SwingWorker运行SwingWorker,从publish()每个100rows到ResultSetTableModel,TableFromDatabase,然后用户可以立即看到第1 100行,其余的行是从由Swing worker管理的工作线程中添加的。
  • 是容易,简单和可能的分裂一个庞大的查询集的查询,创建SQL查询与分页,
票数 5
EN

Stack Overflow用户

发布于 2013-12-03 19:16:03

创建对象是一个昂贵的过程。我建议不要为从DB中获取的每个字段创建单独的标签。您选择不使用JTable/TableModel有什么原因吗?这似乎是表示数据库中数据表的最佳工具。关于如何在网络上使用JTable,有很多例子,所以我不打算在这里描述。

作为一个实验,以确定JLabel创建是否导致了您的问题,请为每一行创建一个标签,而不是为每个字段创建一个JLabel,并查看这在多大程度上改善了问题。

我还支持mKorbel的建议,如果需要立即响应,可以批量处理。这允许您向用户提供一些即时数据,并在其可用时查询和提供其余的信息。

这对于您的大型数据集非常有用,前提是用户在能够做出决定或得出所需的结论之前不需要所有信息(即首先解决导致他们查询的问题)。如果是这样的话,一个繁忙的指标可能是最好的。

祝好运!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20359635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档