Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个面板移除面板时停止执行线程_Java_Multithreading_Jpanel - Fatal编程技术网

Java 从另一个面板移除面板时停止执行线程

Java 从另一个面板移除面板时停止执行线程,java,multithreading,jpanel,Java,Multithreading,Jpanel,我有一个面板(B)在面板(a)内。 面板(B)开始执行线程并更新自己的GUI 但有一种情况是,当线程继续执行时,用户从面板(B)注销,而另一个面板(比如面板(C))代替了面板(B) 我想在面板(B)不再可见时中断(停止)此线程…有什么建议吗?一个选项是向面板a添加一个ContainerListener。然后检查面板B是否被删除,并在面板B上调用“stopThread()”。我建议使用“stopThread()”方法创建一个接口(称之为接口C),为B创建自己的面板类,以便B扩展面板实现C 然后在C

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

但有一种情况是,当线程继续执行时,用户从面板(B)注销,而另一个面板(比如面板(C))代替了面板(B)


我想在面板(B)不再可见时中断(停止)此线程…有什么建议吗?

一个选项是向面板a添加一个ContainerListener。然后检查面板B是否被删除,并在面板B上调用“stopThread()”。我建议使用“stopThread()”方法创建一个接口(称之为接口C),为B创建自己的面板类,以便B扩展面板实现C

然后在ContainerListener.componentRemoved方法中,测试已删除的组件:

if (component instanceof C)
{
  C c = (C)component;
  c.stopThread();
}
您甚至可以包含startThread(),并在使用类似技术添加时调用它