gpt4 book ai didi

java - 如何取消 JPanel 的重绘?

转载 作者:行者123 更新时间:2023-11-29 03:34:01 25 4
gpt4 key购买 nike

我知道默认情况下 JPanel 是自动双缓冲的。但是,我的面板有一个特别耗时的绘制操作,但是只有底层数据发生变化才需要重新绘制面板,这种情况很少见。因此,我想重用 JPanel 缓冲区,而不是在每次调用 repaint() 后清除它。

我已经在我的 JPanel 子类上手动实现了一个“脏”标志,但我不知道如何在启动后取消绘制操作。我一开始就无法避免调用重绘,因为我的面板位于 JScrollPane 内,每次调整大小时都会重绘(确实经常发生),这导致我的自定义面板重新粉刷。

有没有办法在不手动缓冲面板的情况下做到这一点?如果不是,那么结合 JPanel 实现手动缓冲区的推荐方法是什么?

最佳答案

I have a particularly time-intensive painting operation .. only needs to be repainted when the underlying data changes, which is rare..

将数据绘制到 BufferedImage , 显示在 JLabel 中.调用label.repaint()如果它改变了。例如。如 this answer 中所示.

Bonus 在标签中显示图像是获得具有首选大小的 GUI 的一种方式,不需要扩展任何内容。要获得显示它的框架或对话框的完美尺寸,请调用 pack()

关于java - 如何取消 JPanel 的重绘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16475868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com