我试图制作一个JFrameable" Loader"我最喜欢的Java游戏之一,但我不知道如何将实际的.Jar加载到JFrame
面板中(我被告知这被称为Applet,我猜我已经落后了一点位)
我设置了JFrame
面板以及我想要的所有内容,但我不知道如何加载.jar并向其发送参数并告诉它我希望它在哪里
任何帮助或链接都将非常感谢...因为我找不到任何东西
答案 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);