仅创建一个applet实例并更新其余实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅创建一个applet实例并更新其余实例相关的知识,希望对你有一定的参考价值。

如果在浏览器窗口或独立applet中打开另一个applet实例,任何人都可以建议能够创建applet并共享其参数。

我打算做的是在applet打开时启用JButton。如果单击该按钮,则应禁用该按钮。代码部分工作正常。什么不能正常工作,当我同时打开2个applet窗口(运行相同的代码),然后单击按钮时,该按钮在当前窗口中禁用;但它不会在另一方面禁用。

我想要完成的是打开2个applet窗口,然后在一个窗口中单击按钮,并想要查看两个窗口中的按钮是否都禁用。这是相同的applet代码,只打开了2个不同的窗口。我试过以下样本:

public void init() {
    mousePressed();
    click = new JButton("click");
    click.setActionCommand("click");
    if (isFileAvailableForCapture())
        click.setEnabled(true);
    else {
        click.setEnabled(false);
    }
}

void mousePressed(){
    if(click==null)
        System.out.println("This is the value of click" + click);
    click = new JButton("click");
}

我怎么做到这一点?请帮忙 !

答案

如果Applet在同一个虚拟机实例中运行,则它们只能进行通信。

您可以尝试将SEPARATE_JVM参数指定为false,但我不相信它会在所有情况下都有效。我希望失败的一个特殊情况是如果applet被拖出浏览器。我不确定这是否是'独立applet'的意思。

如果能使其工作,将会有什么用?你会建议在applet代码本身没有直接的方法吗?

到目前为止,我只考虑了在applet之间进行通信的典型“内置”方法。还有其他方法可以解决这个问题。

  • 读/写cookie。一个小程序写一个cookie说'禁用现在',另一个小程序'轮询'一个cookie(试图定期获取它,比如说每秒钟左右),如果存在,则禁用它自己的按钮。请注意,AFAIR,浏览器会提示用户是否允许网站存储cookie,因此最好事先向用户说明applet将(或可能)建立cookie,以及该功能支持什么。如果一个随机网站试图制作一个cookie,我通常会拒绝允许它。某些用户默认禁用cookie。只要两个applet都部署在同一个域上,沙盒applet就可以读/写cookie。
  • 类似于applet cookie机制(但更可靠的方式)是使用JNLP API PersistenceService,它会在第一次保存任何信息时提示用户。用户可以勾选为该JVM会话持续存在的“始终允许”框。 applet可以从相同的代码库读取/写入cookie。
  • 套接字。我很确定applet可以建立一个Socket,但它需要一个可靠的小程序来建立一个ServerSocket。话虽如此,许多机器都有防火墙,插座必须首先应对。

以上是关于仅创建一个applet实例并更新其余实例的主要内容,如果未能解决你的问题,请参考以下文章

导航到目的地时仅创建一个片段实例(android)

可以更新片段而不是创建新实例吗?

如何防止创建相同片段的 2 个实例?

创建片段而不从 java 代码实例化它

Android - 试图实例化一个不是片段的类

片段必须是公共静态类才能从实例状态正确重新创建