【问题标题】:Why does my applet create a separate window为什么我的小程序创建一个单独的窗口
【发布时间】:2013-01-19 17:37:45
【问题描述】:

向stackoverflow 的伟大思想致敬。我最近一直在用java编写一个小型2D游戏,我想将它导出到一个可以在网页上运行的小程序中。我这样做了,当作为 applet 和作为应用程序运行时,代码运行良好。但是,每当我将代码作为小程序运行时,都会显示小的默认小程序窗口,然后会显示另一个具有正确大小的显示内容的窗口。我认为这就是它无法在我的网页上正确显示的原因。我假设它正在显示第一个窗口中的内容,即空窗口。我想知道如何才能使它只显示一个窗口。我正在使用 Canvas 来显示我的窗口。我将上传任何请求的代码。提前谢谢你!

【问题讨论】:

标签: java php html canvas applet


【解决方案1】:
Java Plug-in 10.5.1.255
Using JRE version 1.7.0_11-b21 Java HotSpot(TM) Client VM
User home directory = C:\Users\Andrew
----------------------------------------------------
c:   clear console window
..
0-5: set trace level to <n>
----------------------------------------------------
Attempting to start init...
-INIT METHOD STARTED-
Preferred size set to java.awt.Dimension[width=852,height=480]
Initialized JFrame with size java.awt.Dimension[width=852,height=480]
Initialized screen (284x160)
Initialized keyboard
Added key listener
Resizeable set to false
Title set
Game component added to screen
Frame packed
Exception in thread "AWT-EventQueue-3" java.lang.NullPointerException
    at sun.awt.SunToolkit.createImage(Unknown Source)
    at com.sun.deploy.uitoolkit.impl.awt.AWTErrorPanel.getErrorImage(Unknown Source)
    at com.sun.deploy.uitoolkit.impl.awt.AWTErrorPanel.paintComponent(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintToOffscreen(Unknown Source)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
    at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
    at javax.swing.RepaintManager.paint(Unknown Source)
    at javax.swing.JComponent._paintImmediately(Unknown Source)
    at javax.swing.JComponent.paintImmediately(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.access$700(Unknown Source)
    at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(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)

I.E.没有小程序,没有窗口。控制台的输出设置为跟踪级别 5。

更新

新结果:

// ..
Frame packed
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "exitVM.0")
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)

代码(缺少SSCCE,我们只能猜测)是否随时调用..

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

?

如果是这样,请将其更改为:

// See http://stackoverflow.com/a/7143398/418556 for demo.
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

后者将在沙盒小程序中被允许,而 EXIT_ON_CLOSE 即使在受信任的小程序中也是不允许的。

【讨论】:

  • 有趣,我没有从代码中收到任何错误消息:/
猜你喜欢
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 2019-10-02
  • 2018-05-08
相关资源
最近更新 更多