快速添加jpanel中的大量jlabel

时间:2013-12-03 19:12:17

标签: java mysql swing user-interface

您好我正在使用java swing来制作从GUI获取数据的java GUI应用程序,然后将每行放入JLabel并将其添加到某个Jpanel。

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

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

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

2 个答案:

答案 0 :(得分:5)

  

从mysql中获取数据,然后将每行放入JLabel并添加   这对某些Jpanel来说。

  • 使用JTable,搜索ResultSetTableModelTableFromDatabase
  

我的问题是,当我获取超过4k行时,应用需要0.3分钟   让上面的过程完成,时间随着数量的增加而增加   行增加了。

  • 4k超出了人们在标准工作时间内使用大量数据的能力
  

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

  • 创建批处理逻辑,从ResultSet运行SwingWorkerpublish()100rows运行ResultSetTableModelTableFromDatabase,然后运行用户可以看到第一个100row非常立即,其余的行是从Swing Worker管理的工作线程中添加的

  • 简单易行,可以将一个巨大的查询拆分为一组查询,使用分页创建SQL查询,

答案 1 :(得分:3)

对象创建是一个昂贵的过程。我建议不要为从数据库中提取的每个字段创建单独的标签。你选择不使用JTable / TableModel有什么理由吗?看起来这将是表示数据库中数据表的最佳工具。有很多关于如何在网络上使用JTable的例子,所以我不会在这里描述。

作为确定JLabel创建是否对您的问题做出贡献的实验,请为每个行创建一个标签,而不是每个字段创建一个JLabel,并查看改进的程度。

如果需要立即响应,我还是第二个mKorbel建议批量处理的事情。这使您可以在查询和呈现其余信息时为用户提供一些即时数据。

这适用于您的大型数据集,前提是用户在做出决策或得出所需结论之前不需要所有信息(即 - 解决导致他们首先查询的问题)。如果是这种情况,繁忙的指标可能是最好的。

祝你好运!