Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/07/2011, 04:28
elpre
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Barra de desplazamiento en un Gantt

Hago respost para poner código y así decir lo que he pensado:
Código:
package org.jfree.chart.demo;

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.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 org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;


public class GanttDemo1 extends ApplicationFrame {

    public GanttDemo1(final String title) {

        super(title);

        final IntervalCategoryDataset dataset = createDataset();
        final JFreeChart chart = createChart(dataset);

        // add the chart to a panel...
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);

    }

    public static IntervalCategoryDataset createDataset() {

        final TaskSeries s1 = new TaskSeries("Scheduled");
        s1.add(new Task("Write Proposal",
               new SimpleTimePeriod(date(1, Calendar.APRIL, 2001),
                                    date(5, Calendar.APRIL, 2001))));
        s1.add(new Task("Obtain Approval",
               new SimpleTimePeriod(date(9, Calendar.APRIL, 2001),
                                    date(9, Calendar.APRIL, 2001))));
        s1.add(new Task("Requirements Analysis",
               new SimpleTimePeriod(date(10, Calendar.APRIL, 2001),
                                    date(5, Calendar.MAY, 2001))));
        s1.add(new Task("Design Phase",
               new SimpleTimePeriod(date(6, Calendar.MAY, 2001),
                                    date(30, Calendar.MAY, 2001))));

        Task ai = new Task("Alpha Implementation",
                new SimpleTimePeriod(date(3, Calendar.JUNE, 2001),
                        date(31, Calendar.JULY, 2001)));
        s1.add(ai);
        Task dr = new Task("Design Review",
                new SimpleTimePeriod(date(1, Calendar.AUGUST, 2001),
                        date(8, Calendar.AUGUST, 2001)));
        s1.add(dr);
        Task rds = new Task("Revised Design Signoff",
                new SimpleTimePeriod(date(10, Calendar.AUGUST, 2001),
                        date(10, Calendar.AUGUST, 2001)));
        s1.add(rds);
        rds.addPredecessor(ai, 50);
        rds.addPredecessor(dr, 0);
        Task bi = new Task("Beta Implementation",
                new SimpleTimePeriod(date(12, Calendar.AUGUST, 2001),
                        date(12, Calendar.SEPTEMBER, 2001)));
        s1.add(bi);
        bi.addPredecessor(ai, 50);
        bi.addPredecessor(dr);
        
        Task tt = new Task("Testing",
                new SimpleTimePeriod(date(13, Calendar.SEPTEMBER, 2001),
                        date(31, Calendar.OCTOBER, 2001)));
        s1.add(tt);
        tt.addPredecessor(ai,date(1, Calendar.OCTOBER, 2001));
        s1.add(new Task("Final Implementation",
               new SimpleTimePeriod(date(1, Calendar.NOVEMBER, 2001),
                                    date(15, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Signoff",
               new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                    date(30, Calendar.NOVEMBER, 2001))));

        final 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);
        final Date result = calendar.getTime();
        return result;

    }
        
    private JFreeChart createChart(final IntervalCategoryDataset dataset) {
        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
            false                // urls
        );    
//chart.getCategoryPlot().getDomainAxis().setMaxCategoryLabelWidthRatio(10.0f)
        return chart;    
    }

    public static void main(final String[] args) {

        final GanttDemo1 demo = new GanttDemo1("Gantt Chart Demo 1");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }

}
Bien, pues he leído que se puede poner un JScrollPane de primeras, pero no sé como ponerlo. He declarado un JPanel y JSrcollPane en donde hago esto:
Código:
    public void crearPanel(){
    	panel = new JPanel();
    	crearPanelScroll();
    	panel.add(sPanel);
    }
    
    public void crearPanelScroll(){
    	sPanel=new JScrollPane(chartPanel);
    }
Lo que no sé tampoco es donde llamar a crearPanel. No sé si me explico