在Java中,可以使用第三方庫來實(shí)現(xiàn)甘特圖(Gantt Chart)的繪制。一個(gè)常用的庫是JFreeChart,它提供了豐富的圖表類型和繪制工具。以下是使用JFreeChart創(chuàng)建甘特圖的步驟:
pom.xml
或build.gradle
文件中添加相應(yīng)的依賴。例如,對于Maven項(xiàng)目,添加以下依賴: <groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.0</version>
</dependency>
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.IntervalBarRenderer;
import org.jfree.data.category.IntervalCategoryDataset;
import org.jfree.data.gantt.Task;
import org.jfree.data.gantt.TaskSeries;
import org.jfree.data.gantt.TaskSeriesCollection;
private static IntervalCategoryDataset createDataset() {
TaskSeries series = new TaskSeries("Tasks");
Task task1 = new Task("Task 1", new Date(1629887400000L), new Date(1629906600000L));
Task task2 = new Task("Task 2", new Date(1629906600000L), new Date(1629925800000L));
series.add(task1);
series.add(task2);
TaskSeriesCollection dataset = new TaskSeriesCollection();
dataset.add(series);
return dataset;
}
public static void main(String[] args) {
// 創(chuàng)建數(shù)據(jù)集
IntervalCategoryDataset dataset = createDataset();
// 創(chuàng)建甘特圖
JFreeChart chart = ChartFactory.createGanttChart(
"Gantt Chart Example", // 圖表標(biāo)題
"Tasks", // 類別軸標(biāo)簽
"Time", // 值軸標(biāo)簽
dataset, // 數(shù)據(jù)集
true, // 是否顯示圖例
true, // 是否顯示工具提示
false // 是否顯示URL
);
// 設(shè)置圖表樣式
CategoryPlot plot = (CategoryPlot) chart.getPlot();
IntervalBarRenderer renderer = (IntervalBarRenderer) plot.getRenderer();
renderer.setItemMargin(0.1);
renderer.setBaseToolTipGenerator(new TaskSeriesToolTipGenerator());
// 保存圖表為PNG文件
try {
ChartUtils.saveChartAsPNG(new File("gantt_chart.png"), chart, 800, 400);
} catch (IOException e) {
System.err.println("Error saving Gantt chart as PNG.");
e.printStackTrace();
}
}
gantt_chart.png
的甘特圖文件。這只是一個(gè)簡單的示例,你可以根據(jù)需要自定義圖表的樣式、顏色等屬性。更多關(guān)于JFreeChart的信息和示例,請參考官方文檔:https://www.jfree.org/jfreechart/index.html