Java JPanel、侦听器和线程

Java JPanel、侦听器和线程,java,multithreading,listener,jframe,jpanel,Java,Multithreading,Listener,Jframe,Jpanel,为了一个学校项目,我正在用JAVA编写一个21点纸牌游戏 在程序中执行了几步之后,我的整个计算机系统都变慢了/结巴了,JFrame中的一些区域变黑了。似乎没有重新粉刷 我会给你一些文字的程序细节,而不是提交代码 我已经对几乎每个GUI组件进行了一些广泛的扩展,以提供我想要的外观和感觉。我使用的JComponent的几乎每个子组件都使用自定义图像背景和抗锯齿(如果适用)重写了其paintComponent 在我的(自定义)JFrame中,我加载了JPanel的扩展版本。此面板包含该屏幕的所有GUI

为了一个学校项目,我正在用JAVA编写一个21点纸牌游戏

在程序中执行了几步之后,我的整个计算机系统都变慢了/结巴了,JFrame中的一些区域变黑了。似乎没有重新粉刷

我会给你一些文字的程序细节,而不是提交代码

我已经对几乎每个GUI组件进行了一些广泛的扩展,以提供我想要的外观和感觉。我使用的JComponent的几乎每个子组件都使用自定义图像背景和抗锯齿(如果适用)重写了其paintComponent

在我的(自定义)JFrame中,我加载了JPanel的扩展版本。此面板包含该屏幕的所有GUI组件。当我想切换屏幕(转到程序的另一部分)时,我会切换到JPanel的另一个扩展版本。我通过删除JFrame中的所有元素并添加新面板来实现这一点。这些不同的面板实现ActionListeners和FocusListeners

此时,我的想法倾向于线程处理问题。目前我的理论是:当一个面板被构建以在JFrame中显示时(每个面板在te程序的不同阶段上),先前构建的面板不会真正“被破坏”,并且这些面板的侦听器保持活动状态

我的问题是,这个理论是否成立。。。在这种情况下,有没有办法“杀死”这些面板,或者至少停止监听

如果我的理论没有道理,还有什么可能导致这些症状?这可能是对paintComponent方法的广泛覆盖吗

任何想法都将受到高度赞赏

问候威尔科

当一个面板被构造为在JFrame中显示时(每个面板在te程序中的不同阶段上),先前构造的面板不会真正被“破坏”,并且这些面板的侦听器保持活动状态

否。事件仅调度到具有焦点的组件。如果组件没有焦点,则不会接收系统生成的事件,如KeyEvents和MouseeEvents。因此,如果面板不可见,则它将不会接收事件

我切换到JPanel的另一个扩展版本。我通过删除JFrame中的所有元素并添加新面板来实现这一点

这不是最好的设计。最好使用为此目的而设计的

我使用的JComponent的几乎每个子组件都使用自定义图像背景和抗锯齿(如果适用)重写了其paintComponent


那么你的定制绘画可能会有问题。如果只使用标准组件而不进行自定义绘制,会发生什么情况?

如果没有看到代码,我真的怀疑是否有人能够帮助您。有一件事——我不明白为什么要从旧的JPanel中删除所有组件——这是不必要的。你的内存用完了吗?你所描述的行为听起来像是你自己。