我有三个班级来制作Snake游戏,Snake,GameBoard和The_Main。 The_Main使用'KeyAdapter'从键盘读入声明为
public class The_main extends KeyAdapter{
但我也想把这个游戏放在一个html页面上,所以我打算把它放在一个小程序中,使用下面的代码:
<html>
<title>Applet Test</title>
<body>
<applet
archive = "TheSnake.jar"
code = "theSnake/The_Main.class"
width="800"
height="800">
</applet>
</body>
</html>
当我加载网页时,它会给我一个java.lang.reflect.InvocationTargetException
。我不知道如何获得堆栈跟踪,如果你们需要那个......
答案 0 :(得分:1)
你cannot extend multiple classes in Java。你can implement multiple interfaces,但这不是你想要的。
您应该有一个扩展Applet
的类,然后扩展KeyAdapter
的类。然后,您可以从KeyAdapter
类引用Applet
类。
像这样的Applet
(在MyApplet.class
中,对于您的HTML):
public MyApplet extends Applet implements Runnable {
// ...
public someMethod() {
MyKeyAdapter adapter = new MyKeyAdapter();
// Do some stuff with `adapter`
}
}
然后,您的KeyAdapter
(未在HTML中使用; 仅从Java调用):
public MyKeyAdapter extends KeyAdapter {
// ...
}