介绍
以下记录描述了有关此版本的重要更改和信息。在某些情况下,该说明提供了有关问题或更改的其他详细信息的链接。
从JDK 11开始,JavaFX模块与JDK分开提供。这些发行说明涵盖了独立的JavaFX 11发行版。JavaFX 11需要JDK 10(必须是OpenJDK版本)或JDK 11.建议使用JDK 11。
重要变化
运行JavaFX应用程序
既然JDK不再包含JavaFX,则必须明确包含应用程序使用的JavaFX模块。有关说明,请参阅JavaFX 11入门页面。
添加API以自定义Spinner控件的步骤重复计时
在JavaFX 11中修改值步骤之前,必须在Spinner控件箭头按钮上按下鼠标的默认持续时间。已添加两个新属性“initialDelay”和“repeatDelay”来配置此行为。
initialDelay:在下一个值步骤之前必须在箭头按钮上按下鼠标的持续时间。默认值现在为300毫秒。
repeatDelay:在第一个值步骤之后,每个连续步骤必须按下鼠标的持续时间。默认值现在为60毫秒。
有关更多信息,请参阅JDK-8167096。
默认情况下,独立的javafx模块不再具有权限
javafx.* 模块现在由应用程序类加载器加载,默认情况下不再具有权限。想要在启用安全管理器的情况下运行的应用程序需要使用“-Djava.security.policy”指定自定义策略文件,并为每个 javafx.* 模块授予所有权限。有关更多信息,请参阅JDK-8210617。
将默认GTK版本切换为3
现在,JavaFX将在存在gtk3库的Linux平台上使用GTK 3。在JavaFX 11之前,GTK 2库是默认的。这与JDK 11中AWT的默认值相匹配。有关更多信息,请参阅JDK-8198654。
新功能
以下注释描述了JavaFX 11中的一些增强功能。有关完整列表,请参阅发行说明末尾的表格。
FX Robot API
添加了公共FX Robot API以支持模拟用户交互,例如在键盘上键入键并使用鼠标以及捕获图形信息。有关更多信息,请参阅JDK-8090763。
删除了功能和选项
删除对libavcodec 53和55的支持
FX Media对libavcodec 53和55的支持已被删除。默认情况下,这些库不在受支持的Linux平台上,并且不再需要。有关更多信息,请参阅JDK-8194062。
已知的问题
JavaFX在Ubuntu 18.04上使用Wayland与OpenJDK 11崩溃
启用XWayland窗口服务器时,JavaFX在Ubuntu 18.04 Linux机器上崩溃。只要FX窗口工具包代码在Linux上使用GTK 3,就会发生这种情况,这是JavaFX 11的默认设置。
建议的解决方法是在运行JavaFX应用程序时使用Xorg服务器而不是Wayland服务器。请注意,JDK 10或JDK 11不支持Wayland。
另一种解决方法是通过在命令行上传递以下系统属性来显式强制GTK 2:
java -Djdk.gtk.version=2 ...
有关更多信息,请参阅JDK-8210411。
使用JDK 10运行时,Swing interop需要合格的导出
要使用带有OpenJDK 10版本的JavaFX 11运行FX / Swing互操作应用程序,必须在java
命令行中添加以下四个限定导出。
--add-exports=java.desktop/java.awt.dnd.peer=javafx.swing
--add-exports=java.desktop/sun.awt=javafx.swing
--add-exports=java.desktop/sun.awt.dnd=javafx.swing
--add-exports=java.desktop/sun.swing=javafx.swing
有关更多信息,请参阅JDK-8210615。
使用具有独立SDK的安全管理器运行时,Swing interop失败
在启用安全管理器的情况下运行时,FX / Swing互操作应用程序将失败。使用JFXPanel或SwingNode的应用程序必须在未启用安全管理器的情况下运行。有关更多信息,请参阅JDK-8202451。
使用jlink创建的最小jdk映像时,Swing interop失败
使用包含JavaFX 11 jmods包中的javafx.swing模块的jlink创建的最小Java映像将无法运行FX / Swing互操作应用程序。例如,如下创建的图像将不起作用:
jlink --output myjdk --module-path javafx-jmods-11 \
--add-modules java.desktop,javafx.swing,javafx.controls
javafx.swing模块依赖于JDK 11中新的jdk.unsupported.desktop模块,必须通过该--bind-services
选项显式添加或包含该模块。
解决方法:使用以下两种方法之一创建映像:
jlink --output myjdk --module-path javafx-jmods-11 \
--add-modules java.desktop,javafx.swing,javafx.controls,jdk.unsupported.desktop
jlink --output myjdk --bind-services --module-path javafx-jmods-11 \
--add-modules java.desktop,javafx.swing,javafx.controls
有关更多信息,请参阅JDK-8210759。
固定错误列表
增强列表