我试图制作一个我最喜欢的Java游戏之一的JFrameable“Loader”,但我不知道如何将实际的.Jar加载到JFrame
面板(我被告知这被称为Applet,猜测我后面有点)在JFrame(面板)中加载一个.Jar Applet
我有JFrame
设置面板和一切我想要它,但我不知道如何去加载.jar并向它发送参数并告诉它我想要的位置。
任何帮助或链接将不胜感激......因为我无法找到任何
我试图制作一个我最喜欢的Java游戏之一的JFrameable“Loader”,但我不知道如何将实际的.Jar加载到JFrame
面板(我被告知这被称为Applet,猜测我后面有点)在JFrame(面板)中加载一个.Jar 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类有一个方法, “把(String键,字符串PARAM)”。这必须正确完成。当你解析网站时,你会发现有用于生成客户端的客户端参数。如果没有发现,那么你可以忽略这一点。如果你想看看需要什么。
然后将下面的代码添加到“getParameter(String name);”方法。
System.out.println(name);
要加载jar,请使用'URLClassLoader'。然后,为了得到applet的一个实例,从类加载器中通过名称获得类,并使用'Class#newInstance()'。为了处理参数,代码库等,你需要定义一个实现'AppletStub'和'AppletContext'的类,并且在那个类中返回必要的参数(从网站或从哪里加载)。使用'Applet#setStub(AppletStub)'将小程序的存根设置为自定义存根的一个实例,然后简单地调用'Applet#init()'和'Applet#start()',最后将它添加到' JFrame的内容窗格。 – Vulcan 2013-03-17 23:29:02
*“我试图制作一款我最喜欢的Java游戏之一的JFrameable”Loader“*为什么?你是否意识到一个applet通常可以通过使用[JWS](http://stackoverflow.com/tags/java-web-start/info)启动而自由浮动?什么是(小程序的)URL? – 2013-03-18 04:49:48
@AndrewThompson一个原因可能是提供与游戏相关的工具/自动化,因此有必要将游戏“包装”在单独的应用程序中。 – Vulcan 2013-03-18 07:29:08