将参数从JNLP传递到JavaFX2

时间:2013-03-29 13:50:42

标签: java applet javafx-2 jnlp

我正在尝试将JNLP文件中定义的参数传递给我的JavaFX 2应用程序。我认为这将是直截了当的,但我似乎无法让它发挥作用。我已经在这个主题上读了很多但没有成功。

这是定义参数的JNLP文件的一部分:

...
<applet-desc  width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback"  name="Module" >
    <param name="requiredFXVersion" value="2.2+"/>
    <param name="key1" value="value1"/>
</applet-desc>
...

我尝试使用以下代码阅读JavaFX 2应用程序中的参数:

@Override
public void start(Stage stage) throws Exception {
    System.out.println("key1 = " + getParameters().getNamed().get("key1"));
    ...
}

但是,如果我清理并构建项目并通过JNLP文件启动它,我会检查Java控制台并获取:

key1 = null

任何想法可能是什么问题?提前谢谢..

1 个答案:

答案 0 :(得分:4)

<applet-desc  width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback"  name="Module" >
    <param name="requiredFXVersion" value="2.2+"/>
    <param name="key1" value="value1"/>
</applet-desc>

AFAIK applet-desc元素仅在没有可用的javafx-runtime时使用。将主类指向com.javafx.main.NoJavaFXFallback意味着您不提供applet的javafx之前的版本。

相反,真正的主要方法和它的参数由下面的元素指出:

<jfx:javafx-desc  width="960" height="720" main-class="brickbreaker.Main"  name="BrickBreaker" >
    <fx:param name="sampleParam" value="Built with 1.7.0_17"/>
    <fx:param name="noValueParam"/>
    <fx:argument>Arg1</fx:argument>
    <fx:argument>Arg2 with spaces </fx:argument>
</jfx:javafx-desc>
  

JavaFX应用程序支持两种类型的应用程序参数:named   和未命名的(请参阅Application.Parameters的API)。

     

可以使用静态命名参数添加到应用程序包中    可以使用添加和未命名的参数。   它们适用于所有执行模式,包括独立的   应用

来源:http://docs.oracle.com/javafx/2/deployment/packaging.htm