在Swing中,当许多组件不断请求重新绘制时,如何为用户交互提供优先级?

时间:2009-09-10 16:29:43

标签: performance swing events

摇摆新手问题......

我有一个系统,窗口中有大量独立的小部件(想想> 100)获取异步更新,然后请求重新绘制。当这些小部件非常快速地获得更新时,它们似乎会重载Swing事件线程,以便用户交互(例如,右键单击以显示上下文菜单)需要很长时间。

我确信有一种处理方式。

我能想到的几个解决方案是: 1)事件的优先级(怀疑是否支持) 2)编写自定义重绘管理器以减慢我的小部件中的项目。 3)组件请求从另一个类重新获得,该类将以某种方式计算脏区并联系Swing。

谢谢!

1 个答案:

答案 0 :(得分:2)

在Swing中,如果可能,将多个重绘请求合并为一个。出于这个原因,我不认为多个重绘事件会使您的应用程序过载。是否有可能在EDT上完成其他事情,而不仅仅是UI操作?

P.S。你是正确的,可以通过计算脏区域来优化绘画。但这通常由组件的UI部分完成,因为只有它知道如何正确完成这样的计算。