我在面板(A)内有一个面板(B)。 面板(B)开始执行线程并更新自己的GUI。
但是有一种情况是用户退出面板(B)和其他面板(比如面板(C))代替(B),而线程继续执行。
当Panel(B)不再可见时,我想中断(停止)此线程......有什么建议吗?
答案 0 :(得分:1)
一个选项是向Panel A添加一个ContainerListener。然后检查是否正在删除Panel B并在Panel B上调用“stopThread()”。我建议创建一个带有“stopThread()”的接口方法(称之为接口C),为B创建自己的Panel类,以便B扩展Panel实现C。
然后在ContainerListener.componentRemoved方法中,测试删除的组件:
if (component instanceof C)
{
C c = (C)component;
c.stopThread();
}
你甚至可以包含一个startThread(),并在使用类似技术添加时调用它。