السلام عليكم و رحمه الله و بركاتة
انا عندي مشكلة في كود الجافا , استخدمت ال jfree chart لرسم الgantt chart يقرا البيانات من قاعده البيانات , اعتقد انه الquery صحيحة بس المشكلة في الرسم !! .. بس يرسم اول task
ملاحظة انا استخدم برنامج ال NetBeans
هذا الكود :
import java.awt.Color;
import java.util.Date;
import java.util.Calendar;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.*;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.IntervalCategoryDataset;
import org.jfree.data.gantt.Task;
import org.jfree.data.gantt.TaskSeries;
import org.jfree.data.gantt.TaskSeriesCollection;
import org.jfree.data.time.SimpleTimePeriod;
import java.util.*;
import java.sql.*;
public class Gantt2 {
private static Date date(int day, int month, int year) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day);
Date result = calendar.getTime();
return result;
}
public static void main(String[] args) {
Connection con = null;
TaskSeriesCollection collection = new TaskSeriesCollection();
/* MySQL */
String databaseURL = "jdbc:mysql://localhost:3306/simulation";
String driverName = "com.mysql.jdbc.Driver";
String user = "root";
String password = "root";
try {
Class.forName(driverName).newInstance();
} catch (Exception ex) {
System.out.println("");
}
try {
con = DriverManager.getConnection(databaseURL, user, password);
if (!con.isClosed()) {
System.out.println("Successfully connected to the DataBase Server...");
}
Statement statement;
statement = con.createStatement();
String selectQuery = "SELECT taskName,fdate,edate FROM tasks where projectID=1 ";
ResultSet resultSet = null;
resultSet = statement.executeQuery(selectQuery);
if (resultSet != null) // Success
{
while (resultSet.next()) {
String taskName = (String) resultSet.getObject("taskName");
Date fdate = (Date) resultSet.getObject("fdate");
Date edate = (Date) resultSet.getObject("edate");
//DELETE
System.out.println("" + taskName + " " + fdate + " " + edate);
TaskSeries schedule1 = new TaskSeries("Scheduled Tasks");
schedule1.add(new Task(taskName,
new SimpleTimePeriod(fdate, edate)));
collection.add(schedule1);
}
}
resultSet.close();
} catch (Exception e) {
System.out.println("" + e);
}
IntervalCategoryDataset dataset = collection;
JFreeChart chart = ChartFactory.createGanttChart(
"Gantt Chart Example", // chart Heading
"Task", // X-axis label
"Date", // Y-axis label
dataset, // dataset
true, // legend
true, // tooltips
false // urls
);
chart.setBackgroundPaint(new Color(0xff, 0xff, 0xcc));
ChartFrame frame = new ChartFrame("Gantt Chart", chart);
frame.setVisible(true);
frame.setSize(400, 350);
}
}و هذا output من برنامج ال NetBeans
اقتباسSuccessfully connected to the DataBase Server...
A 2011-04-21 2011-04-23
B 2011-04-24 2011-04-25
C 2011-04-26 2011-05-02
D null null
java.lang.NullPointerException
و هذي ال Gantt chart >>> و مثل ما تلاحظون بس في 3 خطوط بس كلها مرسومة عند task A

هل هناك احد لدية اي فكرة ؟؟؟ او ماهو سبب هذا الخطا ؟



