我很擅长使用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) {
}
}
注意:它可以在Eclipse中使用它的Applet窗口,但不能在网站上使用。
编辑:
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
答案 0 :(得分:1)
好的我解决了我的问题。这是适合我的解决方案。
SourceCode保持不变(小改变除外)<:em> *:
public class LaunchMenu extends Applet {
public static LoginScreen login;
public static Game game;
public JButton button;
public void init() {
try {button= new JButton("Start the game");
add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
login = new LoginScreen();
login.setVisible(true); *
}
});
} 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相同的文件夹中添加了java.policy
文件。
在这个文件中,我编写了以下代码:
grant {
permission java.security.AllPermission;
};
设置完成后,我又遇到了另一个名为java.lang.RuntimePermission: "exitVM.0"
这个问题的解决方案很简单。在我的JFrame类中,在我的案例LoginScreen
中,有一个行代码setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
。删除或评论它,这对我有用,现在我的Applet可见,登录框打开。这就是我所需要的。
希望这可以帮助很多人遇到同样的问题。