JPanel 在 2 个不同的 JFrames 上绘制

JPanel drawing on 2 different JFrames

我有一个包含 2 个 JFrames 的 Java 项目。在一个框架上是一堆使用 AWT 图形库绘制的东西。另一个框架是使用 javax.swing.JPanel 的设置面板。设置正确地修改了第一个 JFrame 上的内容,但是当它这样做时,设置面板上的修改对象会在主 JFrame 上自行绘制(例如,如果我在设置中选中一个复选框,则复选框的左上角会显示一个复选框)另一个 JFrame)。在我的代码中,我没有将设置面板的内容添加到第一个 JFrame。为什么会发生这种情况?

代码有点长,分为3个不同的文件,所以上传到GitHub。您可以查看完整项目(针对 Eclipse)here, or view the source files directly here. 第一个 JFrame 在 main.java 中,设置 JFrame 在 menuObj.java.

非常有趣的项目。发现是 repaint(); 导致了您的问题。一个奇怪的问题,以前从未遇到过。虽然我个人不喜欢使用重绘,但我实现了一个游戏循环。

虽然在 eclipse 中检查了你的代码,但有很多关于静态访问甚至一个未使用变量的警告。您的 menuObj class 扩展了 JPanel 但也有一个 JPanel 引用变量,当一个 JPanel 什么都不做时有两个 JPanel 是一种资源浪费,但它不能解决您的问题。我建议您也重命名您的 main class,因为它共享 main 方法名称,它可以工作,但将来可能会出现问题。命名您的主要 class "main" 或 "Main" 很诱人,但应避免。

希望能解决您的问题。