支持

常见问题

查找关于 FlexGanttFX 的最常见问题答案 — 包括许可、平台支持、Java 版本等。

常规

FlexGanttFX 是什么?
FlexGanttFX 是面向 JavaFX 应用的强大且复杂的自定义控件。它能够以美观的可视化方式显示与时间轴相关的数据。FlexGanttFX 允许编辑 / 修改数据,从而让用户执行规划和排程操作。FlexGanttFX 不包含任何业务逻辑,这意味着当用户完成更改后,需要由应用程序自行做出正确响应。
我可以用 FlexGanttFX 构建什么?
你可以构建任何需要在时间轴下方显示活动的应用程序。大多数情况下,客户会用它构建规划和排程应用。例如 ERP 系统、制造执行系统等。
FlexGanttFX 是开源的吗?
部分是。FlexGanttFX 采用双重许可。它以 GNU Affero 通用公共许可证 v3(AGPLv3)开源提供,只要你自己的应用也以 AGPLv3 许可发布,就可以免费使用。开发专有或闭源解决方案的公司则需要购买商业许可证。详情请参阅许可页面
FlexGanttFX 支持哪些 Java 版本?
FlexGanttFX 支持 Java 8 到 Java 26。Java 11+ 版本可与 OpenJFX 11 或更高版本一起运行。
FlexGanttFX 支持哪些 JavaFX / OpenJFX 版本?
对于 Java 8,FlexGanttFX 使用 JDK 捆绑的 JavaFX 版本。对于 Java 11 到 26,FlexGanttFX 可与 OpenJFX 11 或更高版本一起运行。
如何将 FlexGanttFX 添加到我的项目?
FlexGanttFX 发行包包含一个 lib 文件夹。该文件夹中的四个 JAR 文件需要添加到应用程序的 classpath 或 module path。此外,名为“ext”的文件夹中包含 FlexGanttFX 所需的 ControlsFX 版本。
你们有 FlexGanttFX 的 Swing 版本吗?
有。它名为 FlexGantt,已经存在多年。你可以从 DLSC 网站下载。它同样是商业产品,与 FlexGanttFX 一样需要许可。
你们有 FlexGanttFX 的 JavaScript 版本吗?
我们的合作伙伴 AISO 已经用 JavaScript 重新实现了 FlexGanttFX API。你可以访问他们的产品网站。它同样是商业产品,与 FlexGanttFX 一样需要许可。

部署

FlexGanttFX 能在 Chrome 或 Safari 等浏览器中运行吗?
可以,但需要使用 JPro。你可以在他们的网站上找到关于该产品的更多信息
FlexGanttFX 能在 iPad、iPhone、Android 等移动设备上运行吗?
可以,但需要使用 Gluon Client 插件并结合 GraalVM
FlexGanttFX 能在嵌入式设备上运行吗?
我们认为可以,因为 Java 和 JavaFX 可以在嵌入式设备上运行。但坦率地说,我们目前还没有遇到这个用例。到目前为止还没有客户提出这种需求。因此,如果你想这样做,请尝试一下并告诉我们结果。

功能

你们是否提供不同方式来布局时间轴数据 / 活动?
是的。FlexGanttFX 支持三种不同布局。最常用的是标准甘特图布局,其中活动显示为水平条。此外,应用程序可以通过图表布局显示图表 / 直方图。还有一种非常独特的议程布局,活动的显示方式类似普通日历视图,也就是 y 轴用于表示一天中的时间。
FlexGanttFX 支持打印吗?
不完全支持。过去我们发现大多数应用并不需要此功能,而且打印复杂甘特图的可用性有限。很多时候,打印版本的需求与屏幕版本的需求差异很大。因此,我们决定将这项任务留给使用 FlexGanttFX 的应用程序自行处理。目前唯一可行的方法是使用标准 JavaFX 打印方式:应用程序创建视图快照并发送到打印机。
我可以在多个甘特图之间同步滚动(分屏)吗?
可以,只需在两个或多个甘特图实例之间绑定属性即可。不过我们已经为你完成了这项工作,并添加了专用容器,使你可以同时显示两个、四个或任意数量的图表。这些容器名为 DualGanttChartContainer、QuadGanttChartContainer 和 MultiGanttChartContainer。
用户如何滚动时间轴?
用户可以通过甘特图右侧底部显示的滚动条进行滚动。支持两种不同类型的滚动条。一种是用于固定时间范围(最早时间和最晚时间)的常规滚动条;另一种是基于 ControlsFX 项目的 PlusMinusSlider 的自定义滚动条,允许用户无限地向过去和未来滚动。这些滚动条默认自动隐藏,只有当用户将鼠标移动到图形区域底部边缘时才会显示(可禁用)。用户也可以通过“平移”滚动,即在背景上按下鼠标并向左或向右拖动。
是否支持拖放?
支持。你可以在同一窗口中的甘特图之间拖动活动,也可以更原生地在不同窗口之间或拖到桌面。所有这些都可以配置。
是否可以向行添加控件?
可以。可以注册一个控件工厂回调,每一行都会调用它。返回的控件会放置在该行上方。另一个很棒的功能是能够为每一行添加一个完全不同的 UI,当该行翻转时它会变得可见,也就是说这个 UI 实际位于行的“背面”,并可按需显示。

许可

有哪些许可证类型?
FlexGanttFX 采用双重许可。你可以在 GNU Affero 通用公共许可证 v3 下使用它 — 完全免费,但你的应用也必须以 AGPLv3 开源,并向所有用户(包括仅通过网络访问的用户)提供源代码 — 或者购买商业许可证,以免除这些 Copyleft 义务,并可交付专有、闭源和 SaaS 应用。
我必须将自己的应用开源吗?
仅当你在 AGPLv3 下使用 FlexGanttFX 时才需要。AGPL 要求向应用的用户提供完整源代码 — 即使应用仅通过网络提供访问也是如此。如果你无法或不愿这样做,商业许可证就是正确选择。
在哪里购买商业许可证?
你可以直接向 DLSC Software & Consulting GmbH 订购。只需给我们发送电子邮件即可。
我需要许可证密钥吗?
不需要。FlexGanttFX 不再使用许可证密钥或试用期。直接将库添加到项目中即可开始开发。使用 FlexGanttFX 即表示你接受适用于你使用场景的许可条款。

定制

处理活动时,我可以更改编辑行为吗?
可以。可以注册一个回调,用于精确指定何时激活哪种编辑操作。默认回调允许用户在鼠标光标位于活动左边缘时更改开始时间,在光标位于活动右边缘时更改结束时间,在鼠标光标位于中间时移动整个活动。如果该活动是“可完成”活动,则左边缘会触发一个编辑操作,用户可以在其中更改该活动的“完成百分比”值。
我可以更改活动的视觉外观吗?
当然可以。FlexGanttFX 中的活动通过 JavaFX 的 Canvas API 绘制。可以为不同类型的活动注册不同的活动渲染器。渲染器可以使用活动提供的信息(例如“状态(status)”)以不同方式绘制活动。渲染器让你能够控制屏幕上的每一个像素。
我可以向行添加可视化信息吗?
可以,这是通过所谓的“系统层”完成的。FlexGanttFX 随附一组标准图层,例如 CalendarLayer 知道如何绘制周末等内容(灰色背景)。另一个例子是 GridLinesLayer,它知道如何绘制顶部时间轴定义的网格线。
FlexGanttFX 支持图层吗?
支持,图层是 FlexGanttFX 中的一等概念。你可以将活动放在不同图层上,从而用次要活动叠加在主要活动之上,这些次要活动仅用于标注主要活动。图层可以随时显示或隐藏。API 也可用于更改图层顺序。标准甘特图工具栏提供了用于操作图层顺序和可见性的 UI。
时间轴可以定制吗?
可以。时间轴由两个子组件组成。第一个是 日期线,用于显示实际时间 / 日期 / 小时。其 UI 由可插拔的单元格工厂创建。第二个子组件是 事件线。它显示时间光标,同时也提供一个“冻结行”,应用程序可以在其中显示全局活动和事件。这些内容可以通过可插拔渲染器进行定制。

还有问题吗?

找不到你需要的答案?请联系 DLSC 团队。

联系我们