【发布时间】:2015-04-13 11:06:11
【问题描述】:
我是 Applet 编程的新手,我想制作一个 Applet 以放在网站上。 所以我们开始吧。
这个项目的目标是,如果您单击该按钮,它将在浏览器顶部打开一个 JFrame。但在测试时,它给了我一个java.lang.ExceptionInInitializerError。
这是源代码:
public class LaunchMenu extends Applet {
public static LoginScreen login;
public static Game game;
public JButton button;
public void init() {
try {button= new JButton("Press this button to start");
add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
login = new LoginScreen();
}
});
} catch (Exception e) {
e.getMessage();
e.getCause();
}
}
public void start() {
login = new LoginScreen();
}
public void stop() {
login.dispose();
game.stop();
}
public static void main(String[] args) {
}
}
注意:它可以在带有 Applet 窗口的 Eclipse 中使用,但不能在网站上使用。
编辑:
Exception in thread "AWT-EventQueue-2" java.lang.IllegalStateException: Applet's parent container not set up
at sun.plugin2.applet.Plugin2Manager.start(Unknown Source)
at sun.plugin2.main.client.PluginMain$StartAppletRunner.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(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)
CacheEntry[http://localhost/AppletTest/Applet.jar]: updateAvailable=true,lastModified=Mon Apr 13 12:24:52 CEST 2015,length=5051938
【问题讨论】:
-
堆栈跟踪会有用吗?
-
1) 为什么要编写小程序?如果是老师指定的,请参考Why CS teachers should stop teaching Java applets。 2) 为什么使用 AWT?请参阅 this answer 了解放弃 AWT 使用支持 Swing 的组件的许多充分理由。
-
@AndrewThompson 回答您的第一个问题;我使用小程序的原因是因为我正在和某人一起做一个项目。他正在制作网站,而我正在制作与 Java 相关的东西。为了把它放在网上,我正在使用小程序。 (我唯一知道的是将它放在网络上):) 对于您的第二个问题:不要误会我的意思,我将 swing 与 AWT 结合使用。 Swing 用于所有视觉部分,而 Awt 用于 ActionListeners 和 ItemsListeners ;) 因为它是“不可能不这样做的。”
-
"(我唯一知道的将它放到网络上)" 从使用Java Web Start 的链接启动
JFrame(它更简单)。 ".. 我将 swing 与 AWT 结合使用。Swing 用于所有视觉部分.." 在这种情况下,public class LaunchMenu extends Applet {应该是public class LaunchMenu extends JApplet {(注意 J 中的那里)。
标签: java swing security exception applet