如何让paintComponents有条件重绘?

jinggangshi 2019-05-22 09:46:18
当窗口有数据更UI时,paintComponents都会执行重绘,想考虑只是在必要时才重绘。
如本人在JLayeredPane的实例中放置了三个层:
0层--有JLabel等控件,有线程实时更新数据,频率高;
1层--背景文字;
2层--背景图片;
问题:
当线程更新0层时,1、2层都会执行paintComponents,这样导致占用资源有点大,因为我的第2层是动态生成的图片,当窗口不产生变化时,我不需要1、2层执行paintComponents,请问有无办法实现?
...全文
94 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
reddiamond127 2019-06-21
  • 打赏
  • 举报
回复
有条件重绘个人认为为可取,还是从其他方面优化吧
jinggangshi 2019-05-22
  • 打赏
  • 举报
回复
引用 1 楼 Anzhiruosu520 的回复:
(假装听懂了,开始一本正经的胡说八道:)我的理解是你说的这个方法是一个渲染器,然后你需要的是更新0层时不执行渲染器,更新1-2层时,才执行渲染器?如果是这样,那么首先你需要重写这个渲染器,然后调用重写的渲染器,接着在重写的渲染器里面添加判断条件,检查1-2层是否更新?如果1-2层更新了,则执行渲染器内部代码,否则直接返回结束渲染器的执行。


哈哈,和我想法差不多,谢谢!
我主要想解决如何少占资源的问题
画夕颜 2019-05-22
  • 打赏
  • 举报
回复
(假装听懂了,开始一本正经的胡说八道:)我的理解是你说的这个方法是一个渲染器,然后你需要的是更新0层时不执行渲染器,更新1-2层时,才执行渲染器?如果是这样,那么首先你需要重写这个渲染器,然后调用重写的渲染器,接着在重写的渲染器里面添加判断条件,检查1-2层是否更新?如果1-2层更新了,则执行渲染器内部代码,否则直接返回结束渲染器的执行。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧