从其他面板中删除面板时停止执行线程

时间:2014-04-06 12:39:56

标签: java multithreading jpanel

我在面板(A)内有一个面板(B)。 面板(B)开始执行线程并更新自己的GUI。

但是有一种情况是用户退出面板(B)和其他面板(比如面板(C))代替(B),而线程继续执行。

当Panel(B)不再可见时,我想中断(停止)此线程......有什么建议吗?

1 个答案:

答案 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(),并在使用类似技术添加时调用它。