将Java小程序迁移到Java WebStart(JNLP)
我将迁移一个Java小程序,通过JNLP作为Java Web Start应用程序启动,并遇到一些问题/误解…将Java小程序迁移到Java WebStart(JNLP),java,applet,migration,java-web-start,jnlp,Java,Applet,Migration,Java Web Start,Jnlp,我将迁移一个Java小程序,通过JNLP作为Java Web Start应用程序启动,并遇到一些问题/误解… 我拥有的资源之一是: 但让我们开始: 目前,该应用程序是一个applet(JApplet),过去是通过将applet标记嵌入到一个HTML中来启动的,applet标记指向一个JNLP 现在,由于所有浏览器都放弃了对applet的支持,我应该将其作为javawebstart运行 简单调用同一JNLP失败,因为无法加载资源(JAR文件)。 这是第一步,通过向JNLP文件添加代码基属性来修复
我拥有的资源之一是: 但让我们开始: 目前,该应用程序是一个applet(
JApplet
),过去是通过将applet标记嵌入到一个HTML中来启动的,applet标记指向一个JNLP
现在,由于所有浏览器都放弃了对applet的支持,我应该将其作为javawebstart运行
简单调用同一JNLP失败,因为无法加载资源(JAR文件)。这是第一步,通过向JNLP文件添加代码基属性来修复 小程序正在浏览器外部启动 但现在最困难的部分。。。我应该/想摆脱任何applet依赖关系 但是怎么做呢?
正确的方法是什么?
指南并没有真正说明问题,因此我有一些问题:
applet.getAppletContext()
的用法及其相关用法应用程序的正确包装应该是什么而不是小程序?
怎么开始呢
是否有一个更详细的指南/示例/教程可供实际示例使用?应用程序的另一个容器可以是JFrame。
迁移路径是将实际UI代码重构(移动)到JPanel中。可以将其放入JApplet中,或者将javawebstart应用程序放入JFrame中。(在此期间,您可以使用混合应用程序)
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
JFrame=新JFrame();
frame.setTitle(“通过JWS的MyApplication”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//在这里将真实的UI添加到框架中:setUpGUI(框架);
frame.pack();
frame.setVisible(true);
}
});
}
@凌驾
公共void init(){
invokeLater(新的Runnable(){
公开募捐{
//在这里向applet添加真实的UI:setUpGUI(MyApplication.this);
}
});
}
注意:事件队列
根据问题1:必须以不同的方式替换某些小程序规范。
在这里找到基本知识:
e、 g:对于AppletContext来说,基本服务是一种替代品。在2017/18年使用Java Web Start真的是一个好主意吗?它根本无法在移动环境中运行。您对AppletContext的哪些方法感兴趣?您可以使用javax.imageio包加载图像;您可以使用javax.sound.sampled包播放声音。问题1或问题2都会形成一个单独的问题线索,每个问题本身都“太宽”。投票结束的范围太广。请把你的问题分成(至少)两条线,然后,做一些工作,提出更具体的问题。例如,对于@VGR建议的第1部分,请指定小程序当前使用的小程序上下文的十种方法中的哪一种。”“如何启动它?”?第二部分。在
JPanel
中重新编码GUI,该面板可以放在JApplet
或JFrame
中。搜索或搜索“混合”的帖子。这些答案讨论(并经常显示)如何制作应用程序。它可以作为小程序或应用程序工作。如果您想更进一步,完全删除applet支持,那么一旦有了一个工作的混合applet/应用程序,就应该很容易了。
<!-- 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);
}
});
}