java - 许多图形组件以何种方式影响 Swing GUI 的性能?

标签 java performance user-interface swing profiling

我创建了一个 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/

相关文章:

java - 如何测试方法如何处理并发调用

java.lang.ClassCastException - 同一对象 - 两个类,为什么?

mysql - 如何像这样调整mysql中的自连接表?

sql-server - 了解 SQL Server 查询性能测试 - 输出无法理解

java - 关于JSP计算的问题

javascript - 如果元素的位置是绝对的,浏览器的渲染是否回流?

user-interface - 为熟练和频繁使用而构建的 Web 应用程序的良好示例在哪里?

ios - 以全分辨率在iPad上运行iPhone应用程序

python-3.x - 使用鼠标在 python tkinter Canvas 上绘制并获取指向列表的点?

java - 将迭代器添加到我的数组列表中