我想问一下,是否有人可以解决我面临的问题。我在一个应用程序上工作,它绘制一个动画——例如一个带有移动对象的 map 。我的问题是,在绘图的顶部,还放置了一个 Jtable、Jlist 以及其他组件。
在我的特定示例中,所有这些组件都已添加到包含 map 的面板中。结果,每个组件都会像我的 fps 一样频繁地重新绘制。因此,使其中一张表不可见可以将本来就很高的 CPU 使用率从 50% 左右降低到 30% 以下。
我的问题是,在没有“背景”( map )菜单的情况下,我如何避免调用某种程度上静态的视觉内容 paintComponent() 方法。
由于动画永久重绘,如果菜单与相应的 JPanel 分离,则菜单根本不会显示。
首先想到以下方向:
剪辑 - 实际上没有我想要的那么好,因为 id 喜欢启用在菜单中移动。 JLayeredPane - 已经尝试但似乎结果是,菜单的 paintComponent 方法仍然被频繁调用。 JWindow/Internal Frame - 几分钟前有这个想法。有一个完整的独立容器应该可以处理我的问题,或者?
我很期待,如果有人有一个优雅的想法,如何解决它并显着降低 cpu 使用率。
谢谢!! 此致。
最佳答案
我会为剪辑创建一个自定义形状。使用 Area 类并从 Area 中减去所有子组件的边界。
关于java - 顶部带有 JComponents 的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214827/