Java 在一个版本中支持Swing小程序和框架

Java 在一个版本中支持Swing小程序和框架,java,swing,applet,Java,Swing,Applet,我正在开发一款游戏,我想将其嵌入到web浏览器中,并作为独立的jar下载。我有一个子类JComponent,负责游戏。我还有一个子类JApplet和JFrame,显示游戏实例。如果有办法,我可以在我的主要方法中执行以下操作: if (isEmbedded) { new AppletViewer(); } else { new FrameViewer(); } 或者我需要导出两次,首先使用AppletViewer,然后使用FrameViewer?您可以使用如下结构: import

我正在开发一款游戏,我想将其嵌入到web浏览器中,并作为独立的jar下载。我有一个子类
JComponent
,负责游戏。我还有一个子类
JApplet
JFrame
,显示游戏实例。如果有办法,我可以在我的主要方法中执行以下操作:

if (isEmbedded) {
    new AppletViewer();
} else {
    new FrameViewer();
}

或者我需要导出两次,首先使用
AppletViewer
,然后使用
FrameViewer

您可以使用如下结构:

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();
    }
}
如果类作为小程序加载,则小程序将按原样执行


如果类加载到JVM中,则会调用main()方法,并将小程序组件添加到JFrame中。

考虑完全转储小程序,对于“离线”选项,请使用从链接启动框架。