Java JPanel、侦听器和线程
为了一个学校项目,我正在用JAVA编写一个21点纸牌游戏 在程序中执行了几步之后,我的整个计算机系统都变慢了/结巴了,JFrame中的一些区域变黑了。似乎没有重新粉刷 我会给你一些文字的程序细节,而不是提交代码 我已经对几乎每个GUI组件进行了一些广泛的扩展,以提供我想要的外观和感觉。我使用的JComponent的几乎每个子组件都使用自定义图像背景和抗锯齿(如果适用)重写了其paintComponent 在我的(自定义)JFrame中,我加载了JPanel的扩展版本。此面板包含该屏幕的所有GUI组件。当我想切换屏幕(转到程序的另一部分)时,我会切换到JPanel的另一个扩展版本。我通过删除JFrame中的所有元素并添加新面板来实现这一点。这些不同的面板实现ActionListeners和FocusListeners 此时,我的想法倾向于线程处理问题。目前我的理论是:当一个面板被构建以在JFrame中显示时(每个面板在te程序的不同阶段上),先前构建的面板不会真正“被破坏”,并且这些面板的侦听器保持活动状态 我的问题是,这个理论是否成立。。。在这种情况下,有没有办法“杀死”这些面板,或者至少停止监听 如果我的理论没有道理,还有什么可能导致这些症状?这可能是对paintComponent方法的广泛覆盖吗 任何想法都将受到高度赞赏 问候威尔科 当一个面板被构造为在JFrame中显示时(每个面板在te程序中的不同阶段上),先前构造的面板不会真正被“破坏”,并且这些面板的侦听器保持活动状态 否。事件仅调度到具有焦点的组件。如果组件没有焦点,则不会接收系统生成的事件,如KeyEvents和MouseeEvents。因此,如果面板不可见,则它将不会接收事件 我切换到JPanel的另一个扩展版本。我通过删除JFrame中的所有元素并添加新面板来实现这一点 这不是最好的设计。最好使用为此目的而设计的 我使用的JComponent的几乎每个子组件都使用自定义图像背景和抗锯齿(如果适用)重写了其paintComponentJava JPanel、侦听器和线程,java,multithreading,listener,jframe,jpanel,Java,Multithreading,Listener,Jframe,Jpanel,为了一个学校项目,我正在用JAVA编写一个21点纸牌游戏 在程序中执行了几步之后,我的整个计算机系统都变慢了/结巴了,JFrame中的一些区域变黑了。似乎没有重新粉刷 我会给你一些文字的程序细节,而不是提交代码 我已经对几乎每个GUI组件进行了一些广泛的扩展,以提供我想要的外观和感觉。我使用的JComponent的几乎每个子组件都使用自定义图像背景和抗锯齿(如果适用)重写了其paintComponent 在我的(自定义)JFrame中,我加载了JPanel的扩展版本。此面板包含该屏幕的所有GUI
那么你的定制绘画可能会有问题。如果只使用标准组件而不进行自定义绘制,会发生什么情况?如果没有看到代码,我真的怀疑是否有人能够帮助您。有一件事——我不明白为什么要从旧的JPanel中删除所有组件——这是不必要的。你的内存用完了吗?你所描述的行为听起来像是你自己。