以下 记录 描述了有关此版本的重要更改和信息。在某些情况下,该说明提供了有关问题或更改的其他详细信息的链接。
从JDK 11开始,JavaFX模块与JDK分开提供。这些发行说明涵盖了独立的JavaFX 11发行版。JavaFX 11需要JDK 10(必须是OpenJDK版本)或JDK 11.建议使用JDK 11。
既然JDK不再包含JavaFX,则必须明确包含应用程序使用的JavaFX模块。有关说明,请参阅 JavaFX 11入门 页面。
在JavaFX 11中修改值步骤之前,必须在Spinner控件箭头按钮上按下鼠标的默认持续时间。已添加两个新属性“initialDelay”和“repeatDelay”来配置此行为。
initialDelay:在下一个值步骤之前必须在箭头按钮上按下鼠标的持续时间。默认值现在为300毫秒。
repeatDelay:在第一个值步骤之后,每个连续步骤必须按下鼠标的持续时间。默认值现在为60毫秒。
有关更多信息,请参阅 JDK-8167096 。
javafx.* 模块现在由应用程序类加载器加载,默认情况下不再具有权限。想要在启用安全管理器的情况下运行的应用程序需要使用“-Djava.security.policy”指定自定义策略文件,并为每个 javafx.* 模块授予所有权限。有关更多信息,请参阅 JDK-8210617 。
现在,JavaFX将在存在gtk3库的Linux平台上使用GTK 3。在JavaFX 11之前,GTK 2库是默认的。这与JDK 11中AWT的默认值相匹配。有关更多信息,请参阅 JDK-8198654 。
以下注释描述了JavaFX 11中的一些增强功能。有关完整列表,请参阅发行说明末尾的表格。
添加了公共FX Robot API以支持模拟用户交互,例如在键盘上键入键并使用鼠标以及捕获图形信息。有关更多信息,请参阅 JDK-8090763 。
FX Media对libavcodec 53和55的支持已被删除。默认情况下,这些库不在受支持的Linux平台上,并且不再需要。有关更多信息,请参阅 JDK-8194062 。
启用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 。
要使用带有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 。
在启用安全管理器的情况下运行时,FX / Swing互操作应用程序将失败。使用JFXPanel或SwingNode的应用程序必须在未启用安全管理器的情况下运行。有关更多信息,请参阅 JDK-8202451 。
使用包含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 | [Spinner]在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 | 窗口的工具包 |