在JavaFx和Webstart(JNLP)中提供触摸控制

时间:2015-06-22 11:47:44

标签: java javafx java-web-start jnlp

我希望传递java-vm-args以启用应用程序中的触控控件,该应用程序通过带有JNLP文件的webstart进行部署。在IDE(Intellij)的本地,我提供了以下java-vm-args,它正在运行:

-Dcom.sun.javafx.isEmbedded=true -Dcom.sun.javafx.virtualKeyboard=javafx 

进一步使用以下属性,例如对于TextField,如果在IDE中使用上面提到的args启动它可以正常工作:

 myTextField.getProperties().put("vkType", "text");

如下所示修改JNLP的网页开始无效:

[...]
<resources>
  <j2se version="1.8+" java-vm-args="-XX:+UseConcMarkSweepGC -Xmx1024m  -Dcom.sun.javafx.isEmbedded=true -Dcom.sun.javafx.virtualKeyboard=javafx"/>
[...]

应用程序记录传递的java-vm-args,因此我可以检查,是否传递参数。除了上述args之外,所有期望的args都会通过。

如何通过网站启动/ args提供上述JNLP

1 个答案:

答案 0 :(得分:1)

可能JNLP没有明确支持你对java-vm-args的一些参数如here所述(向下滚动到:&#34;此版本支持以下java-vm-args& #34;。)

对于触摸控制,请添加:-Dcom.sun.javafx.touch=true(在此处找到:https://community.oracle.com/thread/3548421

其中一些可用于编程:

例如,检查它是否嵌入:

public void start(Stage stage) {
    boolean isEmbedded = (stage.getWidth() > 0);
    ...
}

其他人可以通过加载JNLP的html页面进行设置。看这里找到所有可用的东西:

http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/deployment_toolkit.html#BABJHEJA

Netbeans上的JavaFX项目生成的JNLP如下所示:

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="JavaFXPreloaderApp.jnlp">
  <information>
    <title>JavaFXPreloaderApp</title>
    <vendor>None</vendor>
    <description>null</description>
    <offline-allowed/>
  </information>
  <resources>
    <j2se version="1.6+" java-vm-args="-Xms100m -Xmx1024m "  href="http://java.sun.com/products/autodl/j2se"/>
    <jar href="lib/JavaFXPreloader.jar" size="3760" download="progress" />
    <jar href="JavaFXPreloaderApp.jar" size="5636" download="eager" />
  </resources>
  <applet-desc  width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback"  name="JavaFXPreloaderApp" >
    <param name="requiredFXVersion" value="8.0+"/>
  </applet-desc>
  <jfx:javafx-desc  width="800" height="600" main-class="application.JavaFXPreloaderApp"  name="JavaFXPreloaderApp"  preloader-class="preloader.JavaFXPreloader"/>
  <update check="always"/>
</jnlp>