仅创建一个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实例并更新其余实例的主要内容,如果未能解决你的问题,请参考以下文章