当前位置:编程学习 > JAVA >>

jfreechart中gantt显示位置不对


如图2001.4.1-2001.4.5的任务task1的进度显示的位置明显不对,不知道是我哪里没有设置正确,求高手指点。
如下是这个demo的全部源码。

package org.jfree.chart.demo;

import java.awt.Color;
import java.awt.Font;
import java.util.Calendar;
import java.util.Date;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
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.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class GanttDemo2 extends ApplicationFrame {
    
private static final long serialVersionUID = 8379244532540783449L;

/**
 * @param title
 */
public GanttDemo2(final String title) {

        super(title);

        final IntervalCategoryDataset dataset = createSampleDataset();

        // create the chart...
        final JFreeChart chart = ChartFactory.createGanttChart(
            "Gantt Chart Demo",  // chart title
            "Task",              // domain axis label
            "Date",              // range axis label
            dataset,             // data
            true,                // include legend
            true,                // tooltips
            true                // urls
        );
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setOrientation(PlotOrientation.VERTICAL);
        
    Font xfont = new Font("宋体",Font.PLAIN,20) ;
    Font yfont = new Font("宋体",Font.PLAIN,20) ;   
               
                
                
                
     // X 轴   
     CategoryAxis domainAxis = plot.getDomainAxis();      
     domainAxis.setLabelFont(xfont);
     domainAxis.setTickLabelFont(xfont);     
     //domainAxis.setTickLabelPaint(Color.BLUE) ;   
     
     domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_90);    
        
     // Y 轴   
     ValueAxis rangeAxis = plot.getRangeAxis();      
     rangeAxis.setLabelFont(yfont);    
     rangeAxis.setTickLabelFont(yfont);     
    // rangeAxis.setInverted(true);
        
        
        
        final CategoryItemRenderer renderer = plot.getRenderer();
        renderer.setSeriesPaint(0, Color.blue);


        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(1000, 600));
        setContentPane(chartPanel);

    }

    private IntervalCategoryDataset createSampleDataset() {

        final TaskSeries s1 = new TaskSeries("taskSeries1");
        
        final Task t1 = new Task(
            "task1", date(1, 3, 2001), date(5, 3, 2001)
        );
        t1.setPercentComplete(0.5);
        s1.add(t1);
        
        final Task t2 = new Task(
            "task2", date(9, 3, 2001), date(11, 3, 2001)
        );
        t2.setPercentComplete(1.00);
        s1.add(t2);

        final Task t3 = new Task(
            "task3", 
            date(10, 3, 2001), date(5, 5, 2001)
        );
        final Task st31 = new Task(
            "task3T1", 
            date(10, 3, 2001), date(25, 3, 2001)
        );
        st31.setPercentComplete(1.0);
        final Task st32 = new Task(
            "task3T2", 
            date(1, 5, 2001), date(5, 5, 2001)
        );
        st32.setPercentComplete(1.0);
        t3.addSubtask(st31);
        t3.addSubtask(st32);
        s1.add(t3);
        TaskSeriesCollection collection = new TaskSeriesCollection();
        collection.add(s1);

        return collection;
    }

    private static Date date(final int day, final int month, final int year) {
        final Calendar calendar = Calendar.getInstance();
        calendar.set(year, month, day);
        Date result = calendar.getTime();
        return result;
    }

    public static void main(final String[] args) {
        final GanttDemo2 demo = new GanttDemo2("gannt 例子");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }

}


--------------------编程问答-------------------- 我自己顶起来 --------------------编程问答-------------------- --------------------编程问答-------------------- 看看API能不能设置位置吧,帮顶 --------------------编程问答-------------------- 坚持顶起来!!! --------------------编程问答-------------------- --------------------编程问答-------------------- 这帖子沉了,唉! --------------------编程问答-------------------- plot.setOrientation(PlotOrientation.VERTICAL);
改成
plot.setOrientation(PlotOrientation.HORIZONTAL);
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,