- Home ›
- JFreeChartを使ったグラフ作成 ›
- ガントチャート(GanttChart) ›
- HERE
ガントチャートの描画領域(CategoryPlotクラス)
広告
グラフの描画領域を取得し、描画領域に対する設定を行っていきます。ファクトリメソッドを使ってJFreeChartクラスのオブジェクトを作成した場合は、JFreeChartクラスで用意されている「getPlot」メソッドを使ってPlotクラスのオブジェクトを取得します。
ガントチャートの場合には、取得したPlotクラスのオブジェクトを、PlotクラスのサブクラスであるCategoryPlotクラスにキャストして取得して使います。棒グラフの場合と同じですので、詳しくは「棒グラフの描画領域(CategoryPlotクラス)」を参照して下さい。
例えば次のように記述します。
JFreeChart chart = ChartFactory.createGanttChart(...); /* 引数は省略 */ CategoryPlot plot = (CategoryPlot)chart.getPlot();
または次のように記述しても結構です。
JFreeChart chart = ChartFactory.createGanttChart(...); /* 引数は省略 */ CategoryPlot plot = chart.getCategoryPlot();
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.data.gantt.TaskSeriesCollection;
import org.jfree.data.gantt.TaskSeries;
import org.jfree.data.gantt.Task;
import java.util.Date;
import java.util.Calendar;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.plot.CategoryPlot;
import java.awt.Color;
public class Test4_1 extends JFrame{
public static void main(String[] args) {
Test4_1 frame = new Test4_1();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(10, 10, 500, 500);
frame.setTitle("グラフサンプル");
frame.setVisible(true);
}
Test4_1(){
JFreeChart chart = ChartFactory.createGanttChart("プロジェクト管理",
"項目",
"日程",
createData(),
true,
false,
false);
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.ORANGE);
ChartPanel cpanel = new ChartPanel(chart);
getContentPane().add(cpanel, BorderLayout.CENTER);
}
private TaskSeriesCollection createData(){
TaskSeriesCollection data = new TaskSeriesCollection();
String[] taskname = {"要件定義", "設計", "開発", "テスト"};
TaskSeries series1 = new TaskSeries("計画");
TaskSeries series2 = new TaskSeries("実績");
Task task11 =
new Task(taskname[0], createData(2007, 3, 4), createData(2007, 3, 12));
Task task12 =
new Task(taskname[1], createData(2007, 3, 12), createData(2007, 3, 25));
Task task13 =
new Task(taskname[2], createData(2007, 4, 2), createData(2007, 4, 30));
Task task14 =
new Task(taskname[3], createData(2007, 5, 1), createData(2007, 5, 10));
series1.add(task11);
series1.add(task12);
series1.add(task13);
series1.add(task14);
Task task21 =
new Task(taskname[0], createData(2007, 3, 4), createData(2007, 3, 14));
Task task22 =
new Task(taskname[1], createData(2007, 3, 14), createData(2007, 4, 3));
Task task23 =
new Task(taskname[2], createData(2007, 4, 5), createData(2007, 5, 10));
Task task24 =
new Task(taskname[3], createData(2007, 5, 11), createData(2007, 5, 18));
series2.add(task21);
series2.add(task22);
series2.add(task23);
series2.add(task24);
data.add(series1);
data.add(series2);
return data;
}
private Date createData(int year, int month, int date){
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, date);
return calendar.getTime();
}
}
上記をコンパイルした後で実行すると次のようにJavaアプリケーションが起動します。
今回は例として描画領域の背景色をオレンジに変更しました。また上記のオレンジの箇所がグラフの描画領域となります。
( Written by Tatsuo Ikura )
JavaDrive