在 JavaFx 和 Webstart (JNLP) 中提供触摸控制
Providing touch control in JavaFx and Webstart (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
的 webstart 不工作:
[...]
<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
都通过了
如何通过 webstart / JNLP
提供上述 args
?
也许您对 java-vm-args 的某些论点没有得到 JNLP 的明确支持,如 here 所述(向下滚动至:"The following java-vm-args are supported by this version")。
对于触摸控制添加:-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>
我想通过 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
的 webstart 不工作:
[...]
<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
都通过了
如何通过 webstart / JNLP
提供上述 args
?
也许您对 java-vm-args 的某些论点没有得到 JNLP 的明确支持,如 here 所述(向下滚动至:"The following java-vm-args are supported by this version")。
对于触摸控制添加:-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>