JavaFX 11发行说明

Wesley13
• 阅读 773

介绍

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

从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

窗口的工具包

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这