【问题标题】:how to display a JFrame from an applet?如何从小程序显示 JFrame?
【发布时间】:2011-02-09 02:57:39
【问题描述】:

我有一个名为 PollFrame 的类,它在名为 PollFrame.java 的文件中扩展了 JFrame。 PollFrame 包含一个表单。我有一个小程序,里面有一个按钮。单击按钮时,我希望显示 PollFrame。我将 ActionPerformed 设置为:

Pollframe poll = new PollFrame(); // This initializes the form
poll.setVisible(true);

但是,当我单击按钮时,我收到以下错误:

Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkExit(Unknown Source)
    at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source)
    at com.org.pollFrame.initComponents(pollFrame.java:54)
    at com.org.pollFrame.<init>(pollFrame.java:11)
    at com.org.EmployeeApplet.requestRoomActionPerformed(EmployeeApplet.java:216)
    at com.org.EmployeeApplet.access$300(EmployeeApplet.java:7)
    at com.org.EmployeeApplet$4.actionPerformed(EmployeeApplet.java:71)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

我从上面的错误中猜测,禁止从小程序调用另一个类文件。有什么方法可以显示小程序中的 PollFrame?

【问题讨论】:

    标签: applet jframe java-web-start accesscontrolexception


    【解决方案1】:

    您似乎在 JFrame 上调用 setDefaultCloseOperation(),这引发了安全异常

    您可以明确地从小程序调用另一个类,但某些操作受到限制,例如。无法打开本地文件,无法打开与其他机器的连接...

    【讨论】:

    • 是的。有效。我删除了 setDefaultCloseOperation(...) 和 setAlwaysOnTop(...),它现在显示 JFrame。但是为什么会这样呢?我的意思是设置这些功能有什么问题?
    • 我的猜测是,在运行小程序时,某些操作比如关闭虚拟机必须只能由浏览器插件处理。
    【解决方案2】:

    我有一个名为 PollFrame 的类,它在名为 PollFrame.java 的文件中扩展了 JFrame。 PollFrame 包含一个表单。我有一个小程序,里面有一个按钮。单击按钮时,我希望显示 PollFrame。

    这是一条线:

    applet.showDocument("PollFrame.jnlp", "_blank");
    

    PollFrame.jnlp 启动的框架将能够在仍处于沙盒状态时调用它喜欢的任何默认关闭操作,因为它将有一个单独的 VM。要“始终处于领先地位”,它需要受到信任(然后与所有其他旨在始终处于领先地位的应用程序一决高下)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多