Java 无法以编程方式触发单击事件

Java 无法以编程方式触发单击事件,java,swing,instrumentation,Java,Swing,Instrumentation,我有下面的场景,我被困在一个地方。有人能帮我吗 我在server1上部署了一个小程序应用程序,我正在client1上访问这个小程序。当我单击JTabbedPane的任意特定选项卡时,请求转到服务器,它下载需要加载的特定类。当我用鼠标点击任何一个标签时,一切正常。当我以编程方式(分派MouseEvent或使用JTabbedPane的setSelectedIndex()方法)执行相同的操作时,它不起作用 注意:我发送事件的代码不在同一个域中,我仅在本地拥有此代码,请阅读下文了解我如何发送事件 我已经

我有下面的场景,我被困在一个地方。有人能帮我吗

我在
server1
上部署了一个小程序应用程序,我正在
client1
上访问这个小程序。当我单击
JTabbedPane
的任意特定选项卡时,请求转到服务器,它下载需要加载的特定类。当我用鼠标点击任何一个标签时,一切正常。当我以编程方式(分派
MouseEvent
或使用
JTabbedPane
setSelectedIndex()
方法)执行相同的操作时,它不起作用

注意:我发送事件的代码不在同一个域中,我仅在本地拥有此代码,请阅读下文了解我如何发送事件

我已经创建了一个java代理
MyAgent.jar
,其中包含一个函数,可以单击选项卡来选择特定的选项卡(
JTabbedPane

我的java代理(instrumentation agent)位于
client1
上,运行小程序时,我将java代理与小程序连接起来,该代理将发送鼠标单击事件。在这种情况下,选项卡被选中,但它抛出
ClassNotFoundException
,并且由于异常,没有组件加载到此选项卡中


任何人遇到类似问题或任何人知道要试用的内容,请告诉我。

与其使用
鼠标侦听器来监视选项卡状态的更改,不如将
ChangeListener
附加到选择模型


这样,选项卡的更改方式就无关紧要了。

问题就解决了。javaAgent的securityContext不同,小程序的securityContext不同。因此javaAgent无法加载小程序上下文中存在的类。现在我已经做了一些更改,这样我的代码也可以在applet上下文中运行。现在,当触发事件时,它可以加载所需的类。

Hi,它是change listener only,tab被选中。问题在于下载需要在单击选项卡时加载的类。当我以编程方式执行时,它不会下载和加载所需的类,并给出ClassNotFoundException。这应该没有什么区别,但您是否可以发布一个代码示例,从事件触发器到代码应该可用的点…我不能在这里给出小程序代码,因为它对我来说也不可用。但我可以向你提供更多的调试信息。同样的代码适用于jre 1.6.21或更早版本,并在更高版本上出现问题。我可以看到的区别是,
acc
(AccessControlContext)对象是在以后的版本中添加在
awteEvent
中的,当以编程方式调度并用鼠标手动单击时,我也可以看到acc对象的不同值。如果有任何关于这方面的信息,那么它将是有用的。如果代码是通过相同的方法,我看不出安全管理器将如何更改,因为启动器是不同的。当以编程方式完成时,代码出现在客户端的“MyAgent.jar”中,如果我使用鼠标单击,则请求将通过一个jar,该jar是从部署小程序的服务器下载的。