2014-01-22 70 views
1

我希望我能夠得到我的信息傳達正確的方式,告訴你那是什麼我期待實現。改變對JFreeChart的甘特圖的範圍軸 - SegmentedTimeline非工作時間

我使用JFreeChart的甘特圖在我的Swing應用程序,以顯示任務的調度。能夠準備正確的數據集並獲得面板上的圖表。它看起來像這樣。

Original GanttChart

沒有問題,因爲這樣的整體功能,但我們的任務調度輪班做,所以它不佔據整個24小時的日子。 說,例如,在我們的情況下,運行時間僅是從0800小時 - 1600個小時。我的數據集也符合這個。如圖所示,步驟7是一項任務,持續時間爲2小時,1月22日1時15分開始,第二天9時結束(兩天1小時,因爲工作時間結束於1600,並開始僅在第二天0800)。

但是看着圖表,第7步是事件中最長的任務之一,只是因爲圖表也考慮了非運行時間。有沒有辦法來改變範圍軸/日期軸考慮的時間段僅在定製小時,或縮減非工作時間(1600-0800小時,在我的情況)?

不幸的是,我沒有JFreeChart的開發者指南,以進一步探討。

下面是我對生成的數據集和創建圖表摘錄

    for (int i = 0; i < tempList.size(); i++) { 

        GanttChartPojo tempGCPojo = new GanttChartPojo(); 
        tempGCPojo = tempList.get(i); 
        s1.add(new Task(tempGCPojo.getTaskStepDesc(), tempGCPojo.getEST(), tempGCPojo.getEFT())); 
        s2.add(new Task(tempGCPojo.getTaskStepDesc(), tempGCPojo.getLST(), tempGCPojo.getLFT())); 


      } 
     } 
    } 

    // Add the task series to a TaskSeriesCollection 
    final TaskSeriesCollection collection = new TaskSeriesCollection(); 
    collection.add(s1); 
    collection.add(s2); 

創建海圖編

// create the chart... 
    final JFreeChart chart = ChartFactory.createGanttChart(
     "Scheduling of Task Steps : Maintenance Event "+eventKey,  // chart title 
     "Task",      // x axis label 
     "Time",      // y axis label 
     dataset,     // data 
     true,      // include legend 
     true,      // tooltips 
     false      // urls 
    ); 


    chart.setBackgroundPaint(Color.pink); 


    return chart; 

} 

UPDATE: 後在互聯網上查找廣泛,我發現我可以使用SegmentedTimeline API消除這種非工作時間。任何人誰使用它之前,請幫我從情節刪除非工作小時的路程?

回答

1

看着XYTaskDatasetDemo1中的例子,你可以做到這一點。這可能是工作得到developer guide因爲這樣的副本會給您訪問演示源代碼

enter image description here

+0

不幸的是,我沒有進入開發人員指南,但在內部做這個用SegmentedTimeline?謝謝 – Napster