我创建了一个 Java Swing 应用程序,我意识到我在一个表单上有很多组件。
不是我的界面是cluttered , 但总数可能会很高(数百),因为用户可以启用界面的其他部分,并且表单上必须有类似列表的重复面板。
另外,许多组件被包装到一个 JXLayer 中,再次增加视觉组件的数量。
直到现在,除了滚动和调整大小时的滞后,我还没有发现任何问题。
- 组件数量是否存在理论上的限制? (我对此表示怀疑,但我也必须在 VB6 中编码,所以我一直在那里......)
- 是否有任何实际限制?在工作中,我们有一些中端工作站,乍一看性能良好,但 Java/Swing 在低端工作站或极端数量的组件上有何 react ?
- 除了检查用户的主观印象之外,还有什么方法可以分析我的应用程序的 GUI?是否有任何我可以寻找的客观指标(比如花费在
javax.swing.SwingCoreClassWhichContainsBottleneckCode
或其他东西上的总时间......)
最佳答案
Swing 可以处理大量只有内存限制的组件,特别是使用简单的组件(文本框、标签、单选按钮等)。有一些技巧,例如减小窗口大小和将所有内容包装在 JScrollPane 中,但通常标准技术(例如在后台进行大量处理)将是您所需要的。
我公司正在开发的功能之一涉及一个带有重复 JPanel 的对话框,其中包含一些标签和一个按钮。我们在我们的旧 Mac Mini(intel core solo 和 512mb 内存)上对其进行了测试,创建 500 个面板需要几秒钟才能加载,但之后滚动面板列表或添加新面板一点也不慢。
对于严重的性能问题,请查看 JTable它针对显示大量数据进行了高度优化。创建自定义渲染器和编辑器有点困难,但并非不可能。
关于java - 许多图形组件以何种方式影响 Swing GUI 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1026008/