如何在浏览器关闭时杀死Java循环中的Java-Applet?

时间:2011-06-12 18:32:41

标签: java networking applet

我有一个Java Applet来显示图像。我在paint()中有一个真正的循环,以便通过tcp / ip socket永久地接收新图像。现在我遇到了问题,即使关闭选项卡,应用程序仍在从服务器请求新映像。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

只是说清楚:

  

我在while(true)中有一个paint()循环,以便通过tcp / ip socket永久接收新图像。

不要这样做。油漆方法永远不应该阻止更长的时间框架。它应绘制您的图像,没有别的。 (只要paint方法正在运行,GUI中的任何其他内容都无法执行任何操作。这对于您的applet可能并不重要,但它适用于更复杂的程序。)

如果您需要加载新图像,请在单独的线程中执行此操作,将图像放在变量中,然后在末尾调用repaint()。然后,绘制方法从变量中获取图像并将其绘制到屏幕上。

答案 1 :(得分:0)

<script>
function closeIt()
{
  document.<appletContainer>.APPLETID.loaded = 0;
}
window.onbeforeunload = closeIt;
window.onunload = closeIt;
</script>

并将public int loaded = 1;添加到您的applet代码

现在,在applet中执行代码之前检查加载变量的值。

答案 2 :(得分:0)

覆盖Applet.destroy()

  

由浏览器或applet查看器调用以通知此applet正在回收它并且它应该销毁它已分配的任何资源。 ..