将Java Applet迁移到Java WebStart(JNLP)

问题描述 投票:1回答:1

我将要通过JNLP作为Java Web Start应用程序迁移Java Applet,并遇到一些麻烦/误解...... 我得到的资源之一是:6 Migrating Java Applets to Java Web Start and JNLP:

但是让我们开始吧:

目前,该应用程序是一个applet(JApplet),并且在过去通过嵌入到带有引用JNLP的applet标记的HTML中而启动。

现在,由于所有浏览器都删除了applet支持,我应该将其作为Java Web Start运行。

简单地调用相同的JNLP失败,因为无法加载资源(JAR文件)。 这是通过向JNLP文件添加代码库属性来修复的第一步。

Applet正在浏览器之外启动。

但现在困难的部分......我应该/想要摆脱任何applet依赖。

但是怎么样? 什么是正确的方法? 指南并没有真正说明,因此我有一些问题:

  1. 例如:如何替换applet.getAppletContext()的使用及其相关用法?
  2. 指南说我应该在我的“主”applet类中放置一个静态main。但是我该怎么做呢?

我尝试以不同的方式启动applet,但之后我的applet不再启动了。

我该如何真正取代它? 什么应该是应用程序而不是applet的正确包装器? 怎么开始呢?

是否有一个更精细的指南/样本/教程可以跟随一个真实的例子?

java applet migration java-web-start jnlp
1个回答
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作为某种替代品。

© www.soinside.com 2019 - 2024. All rights reserved.