java制作甘特图

时间:2024-01-26 22:27:57
今日来做一下甘特图。网上搜到了这个源码,但是导的jar包,并没有给我。swiftganttdemo
但是名为swiftgantt制作;所以灵机一动在网上搜到了swiftangantt组件;在组件中找到了JAR包。

import java.io.IOException;
import java.util.GregorianCalendar;
import com.yuxingwang.gantt.model.GanttModel;
import com.yuxingwang.gantt.model.Task;
import com.yuxingwang.gantt.ui.TimeUnit;

 


代码如下:
/**
 * @author :leleChang
 * @date :Created in 2020/5/8 18:48
 * @description:
 * @modified By:
 */
public class Swif {
    public static <GanttChart> void main(String[] args) throws IOException {
        //1. 首先初始化一个甘特图的主类com.yuxingwang.gantt.GanttChart,
        //是一个继承自javax.swing.JScrollPanel的Swing的组件,通过它就可以用来显示甘特图:
        com.yuxingwang.gantt.GanttChart gantt = new com.yuxingwang.gantt.GanttChart();

        //2. 设置甘特图的时间刻度的单位,如以星期为单位,则时间轴上的每一刻度代表一个星期: 
        gantt.setTimeUnit(TimeUnit.Day);

        //3. 配置甘特图,在这里您可以通过Config类配置您的甘特图,
        //您可以设置甘特图各个元素的颜色,宽度等,详细配置项请参考API文档中的Config类的说明。
        //Config config = gantt.getConfig();
        //config.setWorkingTimeBackColor(Color.red);

        //4. 创建甘特图的数据模型GanttModel,
        //所有的您要显示的项目任务信息都通过GanttModel来提供给GanttChart对象。      
        GanttModel  model = new GanttModel();

        //5. 设置项目开始时间和结束时间:
        model.setKickoffTime(new GregorianCalendar(2007, 1, 4));
        model.setDeadline(new GregorianCalendar(2007, 1, 15));

        //6. 创建甘特图的基本元素:任务对象Task。一个Task对象在甘特图中表现为一条横线。
        //每个Task对象都可以包含任意多的子Task对象,形成树状的任务模型。如果一个Task对象包含子Task,
        //则自动成为对象组,对象组仍然是Task对象,但是在甘特图中显示为不同的形状。
        //如下例,taskGroup就是任务组,包含了两个子任务,task1和task2:
        Task taskGroup = new Task("Changlele\'s Work", new GregorianCalendar(2007, 1, 4), new GregorianCalendar(2007, 1, 15));
        Task task1 = new Task("Sub-task 1 java", new GregorianCalendar(2007, 1, 4), new GregorianCalendar(2007, 1, 8));
        Task task2 = new Task("Sub-task 2 python", new GregorianCalendar(2007, 1, 8), new GregorianCalendar(2007, 1, 15));

        task1.setBackcolor(Color.CYAN);
        task1.setBackcolor(Color.green);
        taskGroup.add(new Task[]{task1, task2});

        //7. 指定任务之间的依赖关系。如果一项任务需要在另一项任务完成之后才能开始,
        //那么需要将另一项任务设为此任务的前置任务。:
        task2.addPredecessor(task1);

        //8. 将主任务组加入甘特图的Model中并将model对象传递给GanttChart:
        model.addTask(taskGroup);
        gantt.setModel(model);
        //这时GanttChart就可以显示出甘特图来了。
        System.out.println(gantt);
        //指定路径,生成图片:
        String filePath = "E:\\gantt.jpg";
        gantt.generateImageFile(filePath);

        //这样在您指定的路径就有生成的甘特图图片文件了。  
    }
}

代码大家都有但是我把需要的jar包告诉大家了,别人的博客上都没看到。

过两天会把甘特图变为网页,融入到微服务框架中,希望大家来评价。