JavaFX2-向Applet传参时JNLP和HTML如何设置?

Applet模式IE可以获取codeBase而Firefox不行

在将一个桌面程序以Applet形式发布时,往往因为资源文件的路径问题需要获取codeBase,然后从服务器端获取资源,在IE浏览器中,默认就可以通过以下语句获取到codeBase

Map<String, String> named = parameters.getNamed();
this.codebase = named.get("codeBase");

然而Firefox却不支持,没有办法在默认情况下获取到codeBase,所以就考虑通过传递参数codeBase进入Applet。

 

方案

通过JNLP将参数codeBase传入到Applet,IE中传入的参数会覆盖默认的codeBase的内容。此时上面的Java代码在IE和Firefox中就都可以获取codeBase了。

 

下面是JNLP和HTML的代码

Daks140UIDesign.jnlp代码

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="Daks140UIDesign.jnlp">
    <information>
        <title>Daks140UIDesign</title>
        <vendor>Alan</vendor>
        <description>Daks140UIDesign</description>
        <offline-allowed/>
    </information>
    <resources>
        <jfx:javafx-runtime version="2.2+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/>
    </resources>
    <resources>
        <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="Daks140UIDesign.jar" size="55632" download="eager" />
    </resources>
    <security>
        <all-permissions/>
    </security>
    <applet-desc  width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback"  name="Daks140UIDesign" >
        <param name="requiredFXVersion" value="2.2+"/>
    </applet-desc>
    <jfx:javafx-desc  width="800" height="600" main-class="daks140uidesign.Daks140UIDesign"  name="Daks140UIDesign" >
        <fx:param name="codeBase" value="http://localhost:8080/Daks140UIDesignSA/"/>
    </jfx:javafx-desc>
    <update check="always"/>
</jnlp>

对于JNLP,这里需要注意,如果在applet-desc中加入param是不起作用的,需要在jfx:javafx-desc里面添加fx:parm

 


HTML代码

<html>
    <head>
        <SCRIPT src="./web-files/dtjava.js"></SCRIPT>
        <script>
            function javafxEmbed() {
                dtjava.embed(
                        {
                            url: 'Daks140UIDesign.jnlp',
                            placeholder: 'javafx-app-placeholder',
                            width: '100%',
                            height: '100%'
                        },
                {
                    javafx: '2.2+'
                },
                {}
                );
            }

            <!-- Embed FX application into web page once page is loaded -->
            dtjava.addOnloadCallback(javafxEmbed);
        </script>
    </head>
    <body>
        <div id='javafx-app-placeholder'></div>
    </body>
</html>

对于HTML,需要特别注意一点,通过Netbeans的JavaFX2工程产生的HTML中有一个jnlp_content属性,这个属性一定要删除,否则在JNLP文件中的任何修改都不会起作用

 

参考

http://stackoverflow.com/questions/15704637/passing-parameters-from-jnlp-to-javafx2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值