在JFrame(Panel)中加载.Jar Applet

时间:2013-03-17 23:15:18

标签: java swing applet jframe

我试图制作一个JFrameable" Loader"我最喜欢的Java游戏之一,但我不知道如何将实际的.Jar加载到JFrame面板中(我被告知这被称为Applet,我猜我已经落后了一点位)

我设置了JFrame面板以及我想要的所有内容,但我不知道如何加载.jar并向其发送参数并告诉它我希望它在哪里

任何帮助或链接都将非常感谢...因为我找不到任何东西

1 个答案:

答案 0 :(得分:1)

由于您没有提供正在使用的网站,我只会解释一些部分。

首先,您需要下载游戏.JAR文件或将其访问。

其次,您需要了解主类,通常称为“main.class”。

第三,你需要类似下面的代码来加载.jar文件主文件。再次将“main.class”变量更改为实际的“.class”。

URL url[] = { 
    new File(directory.concat("/gamepack.jar")).toURI().toURL() 
};

URLClassLoader classLoader = new URLClassLoader(url);
applet = (Applet)classLoader.loadClass("main").newInstance(); 
applet.setBounds(0, 0, width, height);

applet.setBackground(Color.BLACK);
applet.setStub(stub);

applet.init();
applet.start();

mainFrame.getContentPane().add(applet);

你会注意到方法“applet.setStub(stub)”。您需要创建一个AppletStub类。类似于下面的东西就足够了。

package com;

import java.util.Map;
import java.util.HashMap;
import java.net.URL;
import java.applet.AppletStub;
import java.applet.AppletContext;

public class AppletEnvironment implements AppletStub
{
private final Map<String, String> PARAMETERS = new HashMap<String, String>();
private final URL URLBASE;

public AppletEnvironment(final URL URLBASE)
{
    this.URLBASE = URLBASE;
}

public boolean put(String key, String param)
{
    if (PARAMETERS.containsKey(key))
        return false;
    PARAMETERS.put(key, param);
    return true;
}

@Override
public String getParameter(String name) 
{
    return PARAMETERS.get(name);
}

@Override
public URL getCodeBase() 
{
    return URLBASE;
}

@Override
public URL getDocumentBase() 
{
    return URLBASE;
}

@Override
public boolean isActive() 
{
    return true;
}

@Override
public AppletContext getAppletContext()
{
    return null;
}

@Override
public void appletResize(int width, int height) 
{

}
}

现在要让这个班级工作,你需要像下面这样的东西。所以你可以创建“stub”变量。

AppletEnvironment stub = new AppletEnvironment(url);

你会注意到AppletEnvironment类有一个方法“put(String key,String param)”。这必须正确完成。解析网站时,您会发现有用于生成客户端的客户端参数。如果没有找到,那么你可以忽略它。如果你想看看需要什么。

然后在“getParameter(String name);”中添加以下代码方法

System.out.println(name);