JavaFX以自定义程序外观,CSS 将外观和样式与业务逻辑实现进行了分离,因此开发人员可以专注于编码工作。值得注意的是,从 JDK 11 开始,JavaFX 模块与 JDK 分开提供。avaFX 11 需要 JDK 10(必须是 OpenJDK 版本)或 JDK 11,建议使用 JDK 11。
FlexGanttFX是目前可用于Java的最先进的基于JavaFX的甘特图表框架。它使用非常高的抽象级别,允许它应用于各种且通常非常不同的领域,例如ERP系统,生产计划和调度应用程序,制造执行系统或项目组合管理应用程序。 FlexGanttFX及其前身框架FlexGantt(适用于Swing)和DJT已被数百个专业规划和调度应用程序使用和测试。客户名单包括西门子,波音,NASA,JPL,Lockhead Martin,Raytheon,Kuehne + Nagel,SAIC,通用动力,ABAS,Bauer等公司......
不同的调度应用有不同的需求。它们需要不同的可视化和不同的交互。无论您的应用程序是需要在同一行中的不同行上显示每行一个任务还是数千个非重叠制造活动,FlexGanttFX都可以全部呈现它们。由于FlexGanttFX的可插拔渲染器架构和JavaFX canvas API,所有内容看起来都像您希望的那样。
FlexGanttFX是一种高度专业化的自定义控件,用于可视化时间轴上的活动。 FlexGanttFX提供的算法和数据结构专门用于此任务,并保证非常高的性能和出色的响应时间。 JavaFX对canvas API的支持使FlexGanttFX能够绕过昂贵的CSS操作。即使显示250,000个以上的活动,仍然可以进行平滑的滚动和导航操作。
在API的设计过程中给出了对细节的关注。 FlexGanttFX遵循JavaFX 8的准则和原则。甘特图控件及其子控件都使用外观来隐藏实现细节。控件仅公开自定义控件所需的方法。
Gluon Maps拥有悠久而自豪的传统,最初由James Gosling开发。 Gluon继续保持这个项目的活力,完善和改进实施。 源代码在GPL许可下可用,非常欢迎外部贡献。
ControlsFX是JavaFX的一个开源项目,旨在提供真正高质量的UI控件和其他工具,以补充核心JavaFX发行版。 它是为JavaFX 8.0及更高版本开发的,其指导原则是,当所有现有代码处于可接受的高级别时,仅接受新的控件/功能,包括具有高质量javadoc文档的吃力不讨好的工作。 这确保了始终可以获得高质量的版本,所有实验工作都在主代码库的分支中完成。
Deep Space Trajectory Explorer(DSTE)是一个交互式软件包,它结合了尖端的多体轨迹设计技术和创新的可视化,大大减少了轨迹设计所花费的时间。
DSTE使用跨平台的硬件加速技术在屏幕上呈现数百万个链接数据点。多个2D和3D视图结合起来响应用户的操作。通过轨道和地图直接单击,拖动,触摸和滑动,直观地识别出满足任务要求的理想解决方案。
对设计空间的探索产生了满足任务约束的轨迹解决方案系列,允许快速分析替代方案并快速响应不断变化的需求。
新功能介绍
1、运行JavaFX应用程序
既然JDK不再包含JavaFX,则必须明确包含应用程序使用的JavaFX模块。有关说明,请参阅JavaFX 11入门页面。
2、添加API以自定义Spinner控件的步骤重复计时
在JavaFX 11中修改值步骤之前,必须在Spinner控件箭头按钮上按下鼠标的默认持续时间。已添加两个新属性“initialDelay”和“repeatDelay”来配置此行为。
initialDelay:在下一个值步骤之前必须在箭头按钮上按下鼠标的持续时间。默认值现在为300毫秒。
repeatDelay:在第一个值步骤之后,每个连续步骤必须按下鼠标的持续时间。默认值现在为60毫秒。
有关更多信息,请参阅JDK-8167096。
3、默认情况下,独立的javafx模块不再具有权限
javafx。*模块现在由应用程序类加载器加载,默认情况下不再具有权限。想要在启用安全管理器的情况下运行的应用程序需要使用“-Djava.security.policy”指定自定义策略文件,并为每个javafx。*模块授予所有权限。有关更多信息,请参阅JDK-8210617。
4、将默认GTK版本切换为3
现在,JavaFX将在存在gtk3库的Linux平台上使用GTK 3。 在JavaFX 11之前,GTK 2库是默认的。 这与JDK 11中AWT的默认值相匹配。有关更多信息,请参阅JDK-8198654。
JavaFX 11新版说明
1、FX Robot API
添加了公共FX Robot API以支持模拟用户交互,例如在键盘上键入键并使用鼠标以及捕获图形信息。 有关更多信息,请参阅JDK-8090763。
2、删除了功能和选项
删除对libavcodec 53和55的支持
FX Media对libavcodec 53和55的支持已被删除。 默认情况下,这些库不在受支持的Linux平台上,并且不再需要。 有关更多信息,请参阅JDK-8194062。
3、已知的问题
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 ...
4、使用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
5、使用具有独立SDK的安全管理器运行时,Swing interop失败
在启用安全管理器的情况下运行时,FX / Swing互操作应用程序将失败。 使用JFXPanel或SwingNode的应用程序必须在未启用安全管理器的情况下运行。 有关更多信息,请参阅JDK-8202451。
6、使用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
使用帮助
1、使用JavaFX 11运行HelloWorld
下载适用于您的操作系统的JavaFX SDK。
您现在可以从命令行编译和运行JavaFX 11应用程序。 为此,您必须将模块路径指向JavaFX模块的位置,例如
export PATH_TO_FX = / path / to / javafx-sdk-11 / lib
编译代码(例如使用HelloFX.java)如下:
javac --module-path $ PATH_TO_FX --add-modules = javafx.controls HelloFX.java
确保添加所需的模块,同时考虑传递依赖性(因此不需要添加javafx.graphics模块,因为javafx.controls模块需要它)。
接下来,运行应用程序:
java --module-path $ PATH_TO_FX --add-modules = javafx.controls HelloFX
2、使用Maven运行HelloWorld
如果要使用maven开发JavaFX应用程序,则无需下载JavaFX SDK。 只需在pom.xml中指定所需的模块和版本,构建系统将下载所需的模块,包括适用于您平台的本机库。
这是一个pom.xml文件,显示了如何实现这一目标。
使用以下命令运行应用程序(例如使用HelloFX.java):
mvn编译exec:java
注意:确保将JAVA_HOME环境变量设置为JDK 11。
3、使用Gradle运行HelloWorld