前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaFX 11发行说明

JavaFX 11发行说明

作者头像
gemron的空间
发布2019-11-04 12:27:00
6.5K0
发布2019-11-04 12:27:00
举报
文章被收录于专栏:gemrongemron

介绍

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

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

代码语言:javascript
复制
    java -Djdk.gtk.version=2 ...

有关更多信息,请参阅JDK-8210411

使用JDK 10运行时,Swing interop需要合格的导出

要使用带有OpenJDK 10版本的JavaFX 11运行FX / Swing互操作应用程序,必须在java命令行中添加以下四个限定导出。

代码语言:javascript
复制
--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互操作应用程序。例如,如下创建的图像将不起作用:

代码语言:javascript
复制
    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选项显式添加或包含该模块。

解决方法:使用以下两种方法之一创建映像:

代码语言:javascript
复制
    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

窗口的工具包

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 重要变化
    • 运行JavaFX应用程序
      • 添加API以自定义Spinner控件的步骤重复计时
        • 默认情况下,独立的javafx模块不再具有权限
          • 将默认GTK版本切换为3
          • 新功能
            • FX Robot API
            • 删除了功能和选项
              • 删除对libavcodec 53和55的支持
              • 已知的问题
                • JavaFX在Ubuntu 18.04上使用Wayland与OpenJDK 11崩溃
                  • 使用JDK 10运行时,Swing interop需要合格的导出
                    • 使用具有独立SDK的安全管理器运行时,Swing interop失败
                      • 使用jlink创建的最小jdk映像时,Swing interop失败
                      • 固定错误列表
                      • 增强列表
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档