使用Java中的大量组件优化JFrame的绘制

时间:2011-12-30 20:32:33

标签: java swing optimization components

所以我有以下问题。 我创建了一个JInternalFrame,其中包含非常大的组件数(假设有50 000个文本区域)。首先,我执行所有逻辑(捕获文本区域中显示的所有数据),然后在设置框架可见之后,程序冻结的原因(我想它会绘制所有组件)。

优化绘画的最佳方法是什么? 我想我应该使用单独的线程,所以程序不会冻结,但最好的方法是什么? 我应该首先设置框架可见,然后在线程中进行登录,还是应该执行所有登录,然后将其绘制在一个线程中(如果是这样,如何将子组件绘制为与父项不同),或者可能是其他什么?

提前致谢

2 个答案:

答案 0 :(得分:4)

摆动组件不得在EDT之外使用。因此添加线程不是一种选择。显而易见的选择是没有尽可能多的组件。具有50,000个文本区域的UI无法使用。重新设计用户界面。

答案 1 :(得分:4)

一个问题是调用 pack()时的布局。适当的LayoutManager和set(Preffered | Minimum | Maximum)大小将有所帮助。

在JScrollPane中,您似乎正在做一种电子表格。在这种情况下,JTable可以通过虚拟模型帮助鼠标悬停上的文本区域。 (JTable为不同的单元重用相同的组件。)