转载

原 荐 JavaFX 11发行说明

介绍

以下 记录 描述了有关此版本的重要更改和信息。在某些情况下,该说明提供了有关问题或更改的其他详细信息的链接。

从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 。

固定错误列表

发行密钥 概要 子组件
JDK-8203345 启用屏幕阅读器时VirtualFlow中的内存泄漏 无障碍
JDK-8204336 当嵌套事件循环处于活动状态时,Platform.exit()会抛出ISE 应用程序生命周期
JDK-8089454 [HTMLEditor]选择删除CENTER对齐 控制
JDK-8154039 选择TabPane :: getTabs()中未包含的选项卡时内存泄漏 控制
JDK-8157690 [TabPane]排序选项卡使选项卡选择菜单为空 控制
JDK-8165459 HTMLEditor:意外禁用剪贴板工具栏按钮 控制
JDK-8185854 具有自定义外观的TabPane中不可编辑的ComboBox上的NPE 控制
JDK-8187432 ListView:启动时EditEvent的索引不正确 控制
JDK-8192800 表自动调整大小会忽略列调整大小策略 控制
JDK-8193311 [Spin​​ner]在ENTER上未激活默认按钮 控制
JDK-8193495 快速删除和添加操作后,TabPane不会正确更新标题区域中的选项卡位置 控制
JDK-8194913 如果将窗格添加到工具栏,则会破坏焦点遍历 控制
JDK-8196827 test.javafx.scene.control.ComboBoxTest - 生成NullPointerException 控制
JDK-8197846 ComboBox:删除并重新添加后变为无法点击 控制
JDK-8197985 在ListView中按Shift + DOWN会导致抛出异常 控制
JDK-8200285 TabDragPolicy.REORDER阻止显示ContextMenu 控制
JDK-8201285 重复使用具有disable = true的DateCell时,DateCell文本颜色未正确更新 控制
JDK-8208610 在FXMLLoader :: getDefaultClassLoader中调用类的错误检查 FXML
JDK-8129582 在Linux上显示RTL语言文本时,控件显着减慢 图像
JDK-8195801 用MarlinFX中的sun.misc.Unsafe替换jdk.internal.misc.Unsafe 图像
JDK-8195802 消除在javafx.graphics中使用jdk.internal.misc安全实用程序 图像
JDK-8195806 消除javafx.graphics中对sun.font.lookup的依赖 图像
JDK-8195808 消除javafx.graphics中对sun.print的依赖 图像
JDK-8196617 在某些环境中,FX打印测试因NPE而失败 图像
JDK-8198354 [macOS]单词包装标签中显示的损坏的泰语字符 图像
JDK-8201231 WindowStage.setPlatformEnabled中的java.lang.NullPointerException 图像
JDK-8202396 ios native imageloader中的内存泄漏 图像
JDK-8202743 虚线描边随机涂错,可冻结应用 图像
JDK-8203378 如果FX是使用OpenJDK构建的,则JDK构建无法编译javafx.graphics module-info.java 图像
JDK-8203801 PrismLoaderGlue.stg文件中缺少Classpath异常 图像
JDK-8207328 javafx.css.Stylesheet的API文档不准确/错误 图像
JDK-8209191 [macOS]扭曲的复杂文本渲染 图像
JDK-8088722 GSTPlatform无法播放具有多个音轨的MP4文件 媒体
JDK-8191446 [Linux]为openjfx构建构建并提供libav媒体存根 媒体
JDK-8193313 MediaPlayer泄漏本机内存 媒体
JDK-8195803 消除在javafx.media中使用sun.nio.ch.DirectBuffer 媒体
JDK-8198316 在macOS High Sierra 10.13.2上播放m3u8文件时,MediaPlayer崩溃 媒体
JDK-8199008 [macOS,Linux]实例化MediaPlayer导致CPU使用率超过100% 媒体
JDK-8199527 将GStreamer升级到1.14 媒体
JDK-8202393 App Transport Security使用新的编译器使用JDK构建阻止macOS上的http媒体 媒体
JDK-8191661 Win32 HiDPI上的FXCanvas产生错误的结果 其他
JDK-8193910 cssref.html和introduction_to_fxml.html中的版本号是错误的 其他
JDK-8195799 在javafx模块中使用系统记录器而不是平台记录器 其他
JDK-8195800 消除对javafx模块中sun.reflect.misc的依赖 其他
JDK-8195974 将javafx中的java.util.logging替换为System logger 其他
JDK-8196297 删除过时的JFR记录器代码 其他
JDK-8199357 从FX删除对applet和Java Web Start的引用 其他
JDK-8200587 修复FX API文档中的错误 其他
JDK-8202036 更新OpenJFX许可证文件以匹配OpenJDK 其他
JDK-8202357 ModuleHelper.java中版权标头中的额外字符 其他
JDK-8204653 修复FX API文档中的错误 其他
JDK-8204956 修复JDK-8200285后清理空白 其他
JDK-8207794 FXCanvas被重新定义时,FXCanvas不会更新EmbeddedStageInterface的x / y 其他
JDK-8208294 使用jrt协议时,安装本机库失败 其他
JDK-8180151 JavaFX错误地使用具有特定尺寸的两个3D框渲染场景图 场景图
JDK-8192056 从组或容器中删除javafx.scene.shape.Sphere-objects时发生内存泄漏 场景图
JDK-8205008 GeneralTransform3D转换函数与单个Vec3d参数错误结果 场景图
JDK-8207377 使用HiDPI记录Robot :: getPixelColor的行为 场景图
JDK-8201291 单击具有setFocusable(false)的JFXPanel会导致其processMouseEvent方法永远循环 swing
JDK-8088769 HtmlEditor中未显示透明色的Alphachannel web
JDK-8088925 非透明背景导致NumberFormatException web
JDK-8089375 当WebWorker文件无法访问时,脚本应该以静默方式失败或发布有意义的异常 web
JDK-8147476 使用MathML标记元素渲染问题 web
JDK-8193368 [OS X]删除冗余文件 web
JDK-8193590 将WebView与Tooltip一起使用时内存泄漏 web
JDK-8194265 使用FileReader读取文件时,Webengine(webkit)崩溃 web
JDK-8194935 Cherry挑选GTK WebKit 2.18.5的变化 web
JDK-8195804 从java.base删除未使用的合格sun.net.www导出到javafx.web web
JDK-8196011 从JFXPanel应用程序使用WebView时发生间歇性崩溃 web
JDK-8196374 windows x86 webview-icu isAlphaNumericString崩溃 web
JDK-8196677 Cherry挑选GTK WebKit 2.18.6的变化 web
JDK-8196968 在JNIEnv _ :: CallObjectMethod退出时出现一次崩溃 web
JDK-8197987 将libxslt更新为1.1.32版 web
JDK-8199474 更新到WebKit的606.1版本 web
JDK-8200418 “webPage.executeCommand(”“removeFormat”“,null)删除了body元素的样式” web
JDK-8200629 将SQLite更新到版本3.23.0 web
JDK-8202277 由于依赖于javafx.swing,WebView图像捕获因独立FX而失败 web
JDK-8203698 访问某些网站时,JavaFX WebView崩溃 web
JDK-8204856 在PAGE_REPLACED事件之后,WebEngine文档变为空 web
JDK-8206899 运行'dom / html / level2 / html / AppletsCollection.html'时,DRT会随机崩溃 web
JDK-8206995 删除未使用的WebKit文件 web
JDK-8208114 在Webview中打破了文本内容和URL链接功能的拖放 web
JDK-8208622 使用html表单控件调用print API时出现[WebView] IllegalStateException web
JDK-8209049 Cherry挑选GTK WebKit 2.20.4更改 web
JDK-8163795 [Windows]在本机GetScreenCapture方法中删除对StretchBlt的调用 窗口的工具包
JDK-8191885 [MacOS] JavaFX主窗口无法在MacOS中从全屏模式返回 窗口的工具包
JDK-8196031 FX Robot mouseMove在Windows 10 1709上使用HiDPI失败 窗口的工具包
JDK-8199614 [macos] ImageCursor.getBestSize()抛出NullPointerException 窗口的工具包
JDK-8204635 [Linux] getMouseX,gtk中的getMouseY GlassRobot.cpp忽略了HiDPI规模 窗口的工具包
JDK-8207372 Robot.mouseWheel在Linux,Mac上没有正确实现 窗口的工具包

增强列表

发行密钥 概要 子组件
JDK-8205919 创建工件和功能以将其上载到Maven Central 构建
JDK-8167096 添加API以自定义Spinner控件的步骤重复计时 控制
JDK-8177380 在ColorPicker调色板中添加标准颜色 控制
JDK-8186187 修改公共API的返回类型StyleConverter.getEnumConverter() 控制
JDK-8204621 将MarlinFX升级到0.9.2 图像
JDK-8090763 FX Robot API 场景图
JDK-8130379 使用getCenter方法增强Bounds类 场景图
JDK-8195811 使用公共API支持FX Swing互操作 swing
JDK-8198654 将FX的默认GTK版本切换为3 窗口的工具包
原文  https://my.oschina.net/gemron/blog/2208261
正文到此结束
Loading...