الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في رسم ال gantt chart باستخدام Jfreechart

بدأه قمر الامارات في 24 أبريل 2011 · 11 رد · 1,748 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمه الله و بركاتة

انا عندي مشكلة في كود الجافا , استخدمت ال 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

ob010i.jpg

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

#2

اين قاعده البيانات ؟؟

Software Developer
Mahmoudkelany.com


 

#3
Mahmoud Kelany كتب:

اين قاعده البيانات ؟؟

هذه البيانات الخاصة بالجدول tasks

--
-- Create schema simulation
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ simulation;
USE simulation;

--
-- Table structure for table `simulation`.`tasks`
--

DROP TABLE IF EXISTS `tasks`;
CREATE TABLE `tasks` (
  `taskID` int(11) NOT NULL auto_increment,
  `taskName` varchar(200) default NULL,
  `taskDistribution` varchar(50) default NULL,
  `taskDescription` varchar(500) default NULL,
  `projectID` int(11) NOT NULL,
  `min` int(11) default NULL,
  `max` int(11) default NULL,
  `fdate` date default NULL,
  `edate` date default NULL,
  PRIMARY KEY  (`taskID`),
  KEY `projectID` (`projectID`),
  CONSTRAINT `tasks_ibfk_1` FOREIGN KEY (`projectID`) REFERENCES `projects` (`projectID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `simulation`.`tasks`
--

/*!40000 ALTER TABLE `tasks` DISABLE KEYS */;
INSERT INTO `tasks` (`taskID`,`taskName`,`taskDistribution`,`taskDescription`,`projectID`,`min`,`max`,`fdate`,`edate`) VALUES 
 (1,'A','Normal','',1,3,5,'2011-04-21','2011-04-23'),
 (2,'B','Normal','',1,2,11,'2011-04-24','2011-04-25'),
 (3,'C','Normal','',1,7,12,'2011-04-26','2011-05-02'),
 (4,'D','Normal',NULL,1,NULL,NULL,'2011-04-30','2011-05-17'),
 (5,'G','Normal',NULL,2,1,3,NULL,NULL),
 (6,'E','Normal',NULL,1,2,9,'2011-04-27','2011-04-30');
/*!40000 ALTER TABLE `tasks` ENABLE KEYS */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
#4

خطأ مطبعي :blush:

تم تعديل هذه المشاركة بواسطة pro.fahd في 24 أبريل 2011 في 23:14

albert_einstein.jpg

Untitled-AE.jpg
#5

معذره عالتاخير لعدم توفر mysql على الليونكس على ما سطبته بقا :)

تفضلى

/**
 *
 * @author jkelany
 */
import java.awt.Color;
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 java.util.Date date(int day, int month, int year) {

    	Calendar calendar = Calendar.getInstance();
    	calendar.set(year, month, day);
    	java.util.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);


        	TaskSeries schedule1 = new TaskSeries("Scheduled Tasks");

        	if (resultSet != null) // Success
        	{
            	while (resultSet.next()) {

                	String taskName = (String) resultSet.getObject("taskName");
                	java.util.Date fdate = (java.util.Date) resultSet.getObject("fdate");
                	java.util.Date edate = (java.util.Date) resultSet.getObject("edate");

                	//DELETE
                	System.out.println("" + taskName + " " + fdate + "   " + edate);

                	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);
	}
}

post-217802-003491100 1303730972_thumb.p

المرفقات
Screenshot-Gantt Chart.png

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 25 أبريل 2011 في 14:29

1

Software Developer
Mahmoudkelany.com


 

#6

WOOOOOw

شكرراا جدا :)

بس عندي سوال اخر .... لو تلاحظ عند كل task يطلع عندي 5 خطوط ... كيف اقدر احط خط واحد ينعرض ؟؟ يعني خط لكل task ؟؟

شكراا جزيلا مره اخرى ^__^

#7

تفضلى

/**
 *
 * @author jkelany
 */
import java.awt.Color;
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 java.util.Date date(int day, int month, int year) {

    	Calendar calendar = Calendar.getInstance();
    	calendar.set(year, month, day);
    	java.util.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);


        	TaskSeries schedule1 = new TaskSeries("Scheduled Tasks");

        	if (resultSet != null) // Success
        	{
            	while (resultSet.next()) {

                	String taskName = (String) resultSet.getObject("taskName");
                	java.util.Date fdate = (java.util.Date) resultSet.getObject("fdate");
                	java.util.Date edate = (java.util.Date) resultSet.getObject("edate");

                	//DELETE
                	System.out.println("" + taskName + " " + fdate + "   " + edate);

                	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);
	}
}

Software Developer
Mahmoudkelany.com


 

#8

ممكن شرح عم الـ jfree chart لانه موضوع مهم بالنسبة لي ولم اكن اعرف عنه انه ممكن نستخدمه لرسم الـ gantt chart

فلو شرح من البداية عنه او توفير مرجع يساعدنيعلى تعلمه وشكرا

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#9

بصراحه انا اول مره اتعامل معاه ههههههههههههه

ابحث على الانترنت وسوف تجد ان شاء الله

تقريبا فيه مع المكتبه ملفات Testing ممكن تشوفها بردوا

بالتوفيق

Software Developer
Mahmoudkelany.com


 

#10
vector_ever كتب:

ممكن شرح عم الـ jfree chart لانه موضوع مهم بالنسبة لي ولم اكن اعرف عنه انه ممكن نستخدمه لرسم الـ gantt chart

فلو شرح من البداية عنه او توفير مرجع يساعدنيعلى تعلمه وشكرا

في وايد مصادر فالنت و أمثله .. . بس اكثرها ل pie chart و bar chart

#11
Mahmoud Kelany كتب:

تفضلى

/**
 *
 * @author jkelany
 */
import java.awt.Color;
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 java.util.Date date(int day, int month, int year) {

    	Calendar calendar = Calendar.getInstance();
    	calendar.set(year, month, day);
    	java.util.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);


        	TaskSeries schedule1 = new TaskSeries("Scheduled Tasks");

        	if (resultSet != null) // Success
        	{
            	while (resultSet.next()) {

                	String taskName = (String) resultSet.getObject("taskName");
                	java.util.Date fdate = (java.util.Date) resultSet.getObject("fdate");
                	java.util.Date edate = (java.util.Date) resultSet.getObject("edate");

                	//DELETE
                	System.out.println("" + taskName + " " + fdate + "   " + edate);

                	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);
	}
}

شكرااا جزيلا ^___^

و هذي النتيجة :

t02ssx.jpg

#12

الحزمة هذه تعاملت معاها مسبقاً

وتحتوي على الكثير جداً

لدرجة أنهم قاموا بعمل كتب لها

ذكرني بالموضوع بعد تاريخ 7/6 وسأقوم بعمل شرح بسيط لها

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة