我有一个包含2个JFrame的Java项目。在一帧上是使用AWT图形库绘制的一堆东西。另一帧是使用javax.swing.JPanel的设置面板。这些设置正确地修改了第一个JFrame上的内容,但是当设置面板上的修改对象在主JFrame上绘制时(例如,如果我在设置中选中了一个复选框,则会在左上方显示一个复选框)另一个JFrame)。我的代码中没有任何地方可以将设置面板的内容添加到第一个JFrame中。为什么会发生这种情况?
代码有点长并存储在3个不同的文件中,因此我将其上传到GitHub。您可以查看完整项目(对于Eclipse)here, 或直接查看源文件here.第一个JFrame位于main.java中,设置JFrame位于menuObj.java中。
答案 0 :(得分:0)
非常有趣的项目。发现是repaint();
导致您的问题的原因。一个奇怪的问题,以前从未遇到过。虽然我个人不喜欢使用重绘,但我实现了游戏循环。
检查eclipse中的代码,有很多关于静态访问的警告,甚至是一个未使用的变量。您的menuObj类扩展了JPanel,但也有一个JPanel引用变量,当一个什么都不做是浪费资源时有两个JPanel,但它并没有解决您的问题。我建议你重命名你的主类,因为它共享主方法名称,它可以工作,但将来可能是一个问题。命名你的主要课程" main"或" Main"是诱人的,但应该避免。
我希望它能解决你的问题。