我正在尝试为我最喜欢的 Java 游戏之一制作一个 JFrameable“加载器”,但我不知道如何将实际的 .Jar 加载到JFrame
面板中(有人告诉我这被称为 Applet,我猜我落后了一点点)
我已经JFrame
设置了面板和我想要的所有东西,但我不知道如何去加载 .jar 并向它发送参数并告诉它我想要它在哪里。
任何帮助或链接将不胜感激......因为我找不到任何东西
由于您没有提供正在使用的站点,我将仅解释一些部分。
首先,您需要下载游戏 .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)
{
}
}
现在要使该课程正常工作,您将需要以下内容。因此,您可以创建“存根”变量。
AppletEnvironment stub = new AppletEnvironment(url);
您会注意到 AppletEnvironment 类有一个方法“put(String key, String param)”。这必须正确完成。当您解析网站时,您会发现有用于生成客户端的客户端参数。如果没有找到,那么您可以忽略它。如果你想看看需要什么。
然后在“getParameter(String name);”中添加如下代码 方法。
System.out.println(name);