我在java中创建了一个Swing游戏,在桌面上执行时可以正常工作。然而,由于不可预见的事件,我的老板现在要求将游戏变成小程序,以便它可以嵌入到网站中(不,JWS不是一个选项)。
以下是我将游戏转换为applet的步骤:
1)将我的主类更改为public void init()而不是public static void main(),并将其从Applet扩展
2)将myJFrame.java类更改为现在从Applet扩展,而不是从JFrame扩展。
我的applet代码如下:
import java.applet.Applet;
public class app extends Applet{
@Override
public void init() {
myJFrame mjf = new myJFrame();
}
}
import java.applet.Applet;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class myJFrame extends Applet{
private final MainMenu main;
private SidePanel side;
public myJFrame() {
try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() );}
catch (ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException e) {}
main = new MainMenu(this);
add(main, "Center");
setSize(1080,720);
setVisible(true);
}
...
}
现在,我的index.php代码用于嵌入applet
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<object type="application/x-java-applet" name="psych-game" width="1080"height="720">
<param name="code" value="app.java" />
<param name="archive" value="PsychGame.jar" />
</object>
我没有收到错误消息,只是一个空白页。
这是我第一次使用applet,所以如果我错过了一个简单的步骤,我很抱歉。谢谢你的帮助。
答案 0 :(得分:1)
对于applet,你只能在将它传递给其他人之后将其扩展一次,例如:
import java.applet.JApplet;
public class app extends JApplet{
@Override
public void init() {
myJFrame mjf = new myJFrame(this);
}
}
然后为后续课程注意构造函数arg:
import java.applet.JApplet;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class myJFrame {
private final MainMenu main;
private SidePanel side;
private JApplet parent;
public myJFrame(JApplet ja) {
parent = ja;
...
}
...
}
然后,课程中的所有用法都会附加parent.whatever