Как отобразить JFrame из апплета? - PullRequest
1 голос
/ 17 апреля 2010

У меня есть этот класс с именем PollFrame, который расширяет JFrame в файле с именем PollFrame.java. 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 из апплета?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2010

Похоже, вы звоните setDefaultCloseOperation() на свой JFrame, что вызывает исключение безопасности

Вы можете окончательно вызвать другой класс из апплета, но некоторые операции ограничены, например. Вы не можете открывать локальные файлы, открывать соединения с другими машинами ...

1 голос
/ 16 сентября 2011

У меня есть этот класс с именем PollFrame, который расширяет JFrame в файле с именем PollFrame.java. PollFrame содержит форму. У меня есть апплет, в котором есть кнопка. Когда кнопка нажата, я хочу, чтобы PollFrame отображался.

Это один вкладыш:

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

Кадр, запущенный PollFrame.jnlp, сможет вызывать любую операцию закрытия по умолчанию, которая ему нравится, пока она находится в песочнице, поскольку у нее будет отдельная виртуальная машина. Чтобы быть «всегда на вершине», ему нужно доверять (а затем бороться со всеми другими приложениями, которые стремятся быть всегда на вершине).

...