可视化项目时间线有助于团队保持一致并按时完成任务。 Conholdate.Total for Java 提供了强大的 SDK,使得仅用几行代码就能在 Java 中轻松创建甘特图。 在本指南中,您将了解如何设置库、定义任务、定制外观以及将图表导出为 PDF。

设置 Conholdate.Total for Java

在开始编码之前,请确保您已安装 Java 17 或更高版本,并使用兼容 Maven 的 IDE。将 Conholdate Maven 仓库和 SDK 依赖添加到您的 pom.xml 中:

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>
<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

您也可以直接从下载页面下载最新的 JAR 包。将 SDK 添加到类路径后,您即可开始构建图表。

逐步构建:在 Java 中创建甘特图

步骤 1:配置图表选项

首先,创建一个 GanttChartOptions 实例并设置所需的视觉属性。此对象控制标题、时间轴比例、条形颜色等。

GanttChartOptions options = new GanttChartOptions();
options.setTitle("Project Development Schedule");
options.setScale(GanttScale.DAYS);
options.setBarColor(GanttBarColor.BLUE);
options.setBarPattern(GanttBarPattern.SOLID);
options.setBarStyle(GanttBarStyle.RECTANGLE);
options.setEnableCaching(true);

有关详细的属性描述,请参阅 GanttChartOptions API

步骤 2:创建 GanttChart 实例

将配置好的选项传递给 GanttChart 构造函数。

GanttChart chart = new GanttChart(options);

图表对象现在持有布局引擎,准备接收任务。

第3步:添加任务以构建时间线

使用 chart.addTask 将每个项目阶段插入。添加任务是创建 Java 甘特图的核心,因为每个任务定义了开始和结束日期。

chart.addTask("Requirement Analysis", toDate(2023, 10, 1), toDate(2023, 10, 5));
chart.addTask("Design", toDate(2023, 10, 6), toDate(2023, 10, 12));
chart.addTask("Implementation", toDate(2023, 10, 13), toDate(2023, 11, 5));
chart.addTask("Testing", toDate(2023, 11, 6), toDate(2023, 11, 20));
chart.addTask("Deployment", toDate(2023, 11, 21), toDate(2023, 11, 22));

辅助方法 toDate 将年/月/日三元组转换为 java.util.Date 对象。

第4步:导出图表

最后,将图表保存到文件。SDK 支持 PDFPNGJPEG 和其他格式。

chart.save("output/gantt_chart.pdf", SaveFormat.PDF);

如果需要不同的输出,您可以将 SaveFormat.PDF 更改为 SaveFormat.PNGSaveFormat.JPEG

第5步:清理资源

完成后释放本机资源。

chart.dispose();

完整代码示例:甘特图 Java 示例

以下示例演示了如何在 Java 中从头到尾创建甘特图。

import com.groupdocs.chart.GanttChart;
import com.groupdocs.chart.options.GanttChartOptions;
import com.groupdocs.chart.enums.GanttScale;
import com.groupdocs.chart.enums.GanttBarColor;
import com.groupdocs.chart.enums.GanttBarPattern;
import com.groupdocs.chart.enums.GanttBarStyle;
import com.groupdocs.chart.enums.SaveFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;

public class GanttChartDemo {
    public static void main(String[] args) {
        // Configure chart appearance and timeline scale
        GanttChartOptions options = new GanttChartOptions();
        options.setTitle("Project Development Schedule");
        options.setScale(GanttScale.DAYS);               // timeline scale
        options.setBarColor(GanttBarColor.BLUE);         // default bar color
        options.setBarPattern(GanttBarPattern.SOLID);    // bar fill pattern
        options.setBarStyle(GanttBarStyle.RECTANGLE);    // bar shape
        options.setEnableCaching(true);                  // performance for large charts

// Create the Gantt chart with the defined options
        GanttChart chart = new GanttChart(options);

// Populate chart with tasks (dynamic data source can be used similarly)
        chart.addTask("Requirement Analysis", toDate(2023, 10, 1), toDate(2023, 10, 5));
        chart.addTask("Design", toDate(2023, 10, 6), toDate(2023, 10, 12));
        chart.addTask("Implementation", toDate(2023, 10, 13), toDate(2023, 11, 5));
        chart.addTask("Testing", toDate(2023, 11, 6), toDate(2023, 11, 20));
        chart.addTask("Deployment", toDate(2023, 11, 21), toDate(2023, 11, 22));

// Export the Gantt chart to PDF (other formats like PNG, JPEG are also supported)
        chart.save("output/gantt_chart.pdf", SaveFormat.PDF);

// Release resources
        chart.dispose();
    }

// Helper method to convert year/month/day to java.util.Date
    private static Date toDate(int year, int month, int day) {
        return Date.from(
                LocalDate.of(year, month, day)
                        .atStartOfDay(ZoneId.systemDefault())
                        .toInstant()
        );
    }
}

注意: 此代码示例演示了核心功能。在项目中使用之前,请确保更新所有文件路径和配置值以匹配实际环境,验证已正确安装所有必需的依赖项,并在开发环境中彻底测试。如果遇到任何问题,请参考官方文档或联系支持团队获取帮助。

结论

使用 Conholdate.Total for Java 在 Java 中创建甘特图变得简单。通过配置 GanttChartOptions、添加任务并导出结果,您可以在几秒钟内生成专业外观的时间线。SDK 的缓存功能和灵活的 SaveFormat 选项帮助您高效处理大型项目。请记住,生产部署需要商业许可证;您可以从临时许可证页面获取临时许可证,或在定价页面了解定价详情。立即开始将甘特图集成到您的应用程序中,用清晰的可视化进度表让利益相关者保持知情。

常见问题

如何在 Java 中使用 Conholdate.Total 创建甘特图?
使用 GanttChartGanttChartOptions 类,使用 addTask 添加任务,并调用 save 导出。本文提供了完整的代码片段。

我可以将甘特图导出为除 PDF 之外的其他格式吗?
是的。chart.save 方法接受 SaveFormat.PNGSaveFormat.JPEG 等在 SaveFormat 枚举中定义的值。请参阅官方文档获取完整列表。

需要什么许可证才能用于生产?
商业许可证是强制性的。您可以从临时许可证页面请求临时许可证,并在定价页面查看价格。

如何提升大型甘特图的性能?
使用 options.setEnableCaching(true) 启用缓存,并保持任务数量在合理范围内。SDK 已针对大数据集进行优化,缓存可显著减少渲染时间。

阅读更多