基本上我画了很多透明的JPanels;分析表明大部分时间都花在了 Component.paint() 中。可以彻底优化这一点,因为在大多数情况下,每个 JPanel 的真正非透明区域非常小,例如在边缘周围。
就目前而言,repainting() 一个组件将触发对其所有父级的重绘,因为 RepaintManager 无法知道脏父级区域实际上是不透明的,并且会在组件层次结构中上升。我正在考虑markCompletelyClean()
在面板失效时调用所有父母并自己管理脏区addDirtyRegion()
。
但是,是否有更简洁的方法仅将 JPanel 的特定矩形标记为不透明(或透明,没关系)?