介绍
以下记录描述了有关此版本的重要更改和信息。在某些情况下,该说明提供了有关问题或更改的其他详细信息的链接。
从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。
固定错误列表
发行密钥
概要
子组件
启用屏幕阅读器时VirtualFlow中的内存泄漏
无障碍
当嵌套事件循环处于活动状态时,Platform.exit()会抛出ISE
应用程序生命周期
[HTMLEditor]选择删除CENTER对齐
控制
选择TabPane :: getTabs()中未包含的选项卡时内存泄漏
控制
[TabPane]排序选项卡使选项卡选择菜单为空
控制
HTMLEditor:意外禁用剪贴板工具栏按钮
控制
具有自定义外观的TabPane中不可编辑的ComboBox上的NPE
控制
ListView:启动时EditEvent的索引不正确
控制
表自动调整大小会忽略列调整大小策略
控制
[Spinner]在ENTER上未激活默认按钮
控制
快速删除和添加操作后,TabPane不会正确更新标题区域中的选项卡位置
控制
如果将窗格添加到工具栏,则会破坏焦点遍历
控制
test.javafx.scene.control.ComboBoxTest - 生成NullPointerException
控制
ComboBox:删除并重新添加后变为无法点击
控制
在ListView中按Shift + DOWN会导致抛出异常
控制
TabDragPolicy.REORDER阻止显示ContextMenu
控制
重复使用具有disable = true的DateCell时,DateCell文本颜色未正确更新
控制
在FXMLLoader :: getDefaultClassLoader中调用类的错误检查
FXML
在Linux上显示RTL语言文本时,控件显着减慢
图像
用MarlinFX中的sun.misc.Unsafe替换jdk.internal.misc.Unsafe
图像
消除在javafx.graphics中使用jdk.internal.misc安全实用程序
图像
消除javafx.graphics中对sun.font.lookup的依赖
图像
消除javafx.graphics中对sun.print的依赖
图像
在某些环境中,FX打印测试因NPE而失败
图像
[macOS]单词包装标签中显示的损坏的泰语字符
图像
WindowStage.setPlatformEnabled中的java.lang.NullPointerException
图像
ios native imageloader中的内存泄漏
图像
虚线描边随机涂错,可冻结应用
图像
如果FX是使用OpenJDK构建的,则JDK构建无法编译javafx.graphics module-info.java
图像
PrismLoaderGlue.stg文件中缺少Classpath异常
图像
javafx.css.Stylesheet的API文档不准确/错误
图像
[macOS]扭曲的复杂文本渲染
图像
GSTPlatform无法播放具有多个音轨的MP4文件
媒体
[Linux]为openjfx构建构建并提供libav媒体存根
媒体
MediaPlayer泄漏本机内存
媒体
消除在javafx.media中使用sun.nio.ch.DirectBuffer
媒体
在macOS High Sierra 10.13.2上播放m3u8文件时,MediaPlayer崩溃
媒体
[macOS,Linux]实例化MediaPlayer导致CPU使用率超过100%
媒体
将GStreamer升级到1.14
媒体
App Transport Security使用新的编译器使用JDK构建阻止macOS上的http媒体
媒体
Win32 HiDPI上的FXCanvas产生错误的结果
其他
cssref.html和introduction_to_fxml.html中的版本号是错误的
其他
在javafx模块中使用系统记录器而不是平台记录器
其他
消除对javafx模块中sun.reflect.misc的依赖
其他
将javafx中的java.util.logging替换为System logger
其他
删除过时的JFR记录器代码
其他
从FX删除对applet和Java Web Start的引用
其他
修复FX API文档中的错误
其他
更新OpenJFX许可证文件以匹配OpenJDK
其他
ModuleHelper.java中版权标头中的额外字符
其他
修复FX API文档中的错误
其他
修复JDK-8200285后清理空白
其他
FXCanvas被重新定义时,FXCanvas不会更新EmbeddedStageInterface的x / y
其他
使用jrt协议时,安装本机库失败
其他
JavaFX错误地使用具有特定尺寸的两个3D框渲染场景图
场景图
从组或容器中删除javafx.scene.shape.Sphere-objects时发生内存泄漏
场景图
GeneralTransform3D转换函数与单个Vec3d参数错误结果
场景图
使用HiDPI记录Robot :: getPixelColor的行为
场景图
单击具有setFocusable(false)的JFXPanel会导致其processMouseEvent方法永远循环
swing
HtmlEditor中未显示透明色的Alphachannel
web
非透明背景导致NumberFormatException
web
当WebWorker文件无法访问时,脚本应该以静默方式失败或发布有意义的异常
web
使用MathML标记元素渲染问题
web
[OS X]删除冗余文件
web
将WebView与Tooltip一起使用时内存泄漏
web
使用FileReader读取文件时,Webengine(webkit)崩溃
web
Cherry挑选GTK WebKit 2.18.5的变化
web
从java.base删除未使用的合格sun.net.www导出到javafx.web
web
从JFXPanel应用程序使用WebView时发生间歇性崩溃
web
windows x86 webview-icu isAlphaNumericString崩溃
web
Cherry挑选GTK WebKit 2.18.6的变化
web
在JNIEnv _ :: CallObjectMethod退出时出现一次崩溃
web
将libxslt更新为1.1.32版
web
更新到WebKit的606.1版本
web
“webPage.executeCommand(”“removeFormat”“,null)删除了body元素的样式”
web
将SQLite更新到版本3.23.0
web
由于依赖于javafx.swing,WebView图像捕获因独立FX而失败
web
访问某些网站时,JavaFX WebView崩溃
web
在PAGE_REPLACED事件之后,WebEngine文档变为空
web
运行'dom / html / level2 / html / AppletsCollection.html'时,DRT会随机崩溃
web
删除未使用的WebKit文件
web
在Webview中打破了文本内容和URL链接功能的拖放
web
使用html表单控件调用print API时出现[WebView] IllegalStateException
web
Cherry挑选GTK WebKit 2.20.4更改
web
[Windows]在本机GetScreenCapture方法中删除对StretchBlt的调用
窗口的工具包
[MacOS] JavaFX主窗口无法在MacOS中从全屏模式返回
窗口的工具包
FX Robot mouseMove在Windows 10 1709上使用HiDPI失败
窗口的工具包
[macos] ImageCursor.getBestSize()抛出NullPointerException
窗口的工具包
[Linux] getMouseX,gtk中的getMouseY GlassRobot.cpp忽略了HiDPI规模
窗口的工具包
Robot.mouseWheel在Linux,Mac上没有正确实现
窗口的工具包
增强列表
发行密钥
概要
子组件
创建工件和功能以将其上载到Maven Central
构建
添加API以自定义Spinner控件的步骤重复计时
控制
在ColorPicker调色板中添加标准颜色
控制
修改公共API的返回类型StyleConverter.getEnumConverter()
控制
将MarlinFX升级到0.9.2
图像
FX Robot API
场景图
使用getCenter方法增强Bounds类
场景图
使用公共API支持FX Swing互操作
swing
将FX的默认GTK版本切换为3
窗口的工具包