我正在开发一款我希望嵌入到网络浏览器中并可作为独立jar下载的游戏。我有一个JComponent
的子类来处理游戏。我还有一个显示游戏实例的JApplet
和JFrame
的子类。如果有某种方法,我可以在我的主要方法中执行以下操作:
if (isEmbedded) {
new AppletViewer();
} else {
new FrameViewer();
}
或者我是否需要导出两次,首先使用AppletViewer
,然后使用FrameViewer
进行导出?
答案 0 :(得分:3)
您可以使用这样的结构:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class AppletBasic extends JApplet
{
/**
* Create the GUI. For thread safety, this method should
* be invoked from the event-dispatching thread.
*/
private void createGUI()
{
JLabel appletLabel = new JLabel( "I'm a Swing Applet" );
appletLabel.setHorizontalAlignment( JLabel.CENTER );
appletLabel.setFont(new Font("Serif", Font.PLAIN, 36));
add( appletLabel );
setSize(400, 200);
}
@Override
public void init()
{
try
{
SwingUtilities.invokeAndWait(new Runnable()
{
public void run()
{
createGUI();
}
});
}
catch (Exception e)
{
System.err.println("createGUI didn't successfully complete: " + e);
}
}
public static void main(String[] args)
{
JApplet applet = new AppletBasic();
applet.init();
JFrame frame = new JFrame("Applet in Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setJMenuBar( applet.getJMenuBar() );
frame.setContentPane( applet.getContentPane() );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
applet.start();
}
}
如果将类作为applet加载,则applet按原样执行。
如果将类加载到JVM中,则调用main()方法并将applet组件添加到JFrame。