我要将Java Applet迁移到JNLP作为Java Web Start应用程序启动并遇到一些麻烦/误解......
我得到的资源之一是:6 Migrating Java Applets to Java Web Start and JNLP:
但是让我们开始吧:
目前,该应用程序是一个小应用程序(JApplet
),并且在过去通过嵌入带有引用JNLP的applet标记的HTML来启动。
现在,由于所有浏览器都删除了applet支持,我应该将其作为Java Web Start运行。
简单地调用相同的JNLP失败,因为无法加载资源(JAR文件) 这是通过向JNLP文件添加代码库属性来修复的第一步。
Applet正在浏览器之外启动。
但现在困难的部分......我应该/想要摆脱任何applet依赖。
但是怎么样?
什么是正确的方法?
指南并没有真正说明,因此我有一些问题:
applet.getAppletContext()
的用法及其相关用法?我试过&以不同的方式启动applet,但之后我的applet不再启动了。
我如何真正取代它?
什么应该是应用程序的正确包装器而不是applet?
怎么开始呢?
是否可能有一个更精细的指南/样本/教程可以跟随一个真实的例子?
答案 0 :(得分:2)
您应用程序的替代包含可以是JFrame 迁移路径将重构(移动)实际UI代码到JPanel中。可以将其放入JApplet或Java WebStart应用程序放入JFrame。 (在那段时间你可以有一个混合应用程序)。
<!-- main in MyApplication -->
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.setTitle("MyApplication via JWS");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// add here the real UI to the frame: setUpGUI(frame);
frame.pack();
frame.setVisible(true);
}
});
}
<!-- Init() in MyApplication extends JApplet -->
@Override
public void init() {
EventQueue.invokeLater(new Runnable() {
public void run() {
// add here the real UI to the applet: setUpGUI(MyApplication.this);
}
});
}
注意:EventQueue。
根据问题1:
一些Applet规范必须以不同的方式替换
在此处查找基础知识:https://docs.oracle.com/javase/9/deploy/jnlp-api-examples.htm
例如:对于AppletContext,BasicService作为某种替代。