Foros del Web » Programación para mayores de 30 ;) » Java »

Barra de desplazamiento en un Gantt

Estas en el tema de Barra de desplazamiento en un Gantt en el foro de Java en Foros del Web. Hola, estoy haciendo un gantt con java y la cosa no está mal ya que solo he tenido que modificar un poco un código que ...
  #1 (permalink)  
Antiguo 01/07/2011, 01:29
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Barra de desplazamiento en un Gantt

Hola, estoy haciendo un gantt con java y la cosa no está mal ya que solo he tenido que modificar un poco un código que hay por internet. Pero ahora veo un problema y es que si hay muchas tareas la ventana del gráfico no aumenta, por lo tanto se pegan entre ellas y había pensado en ponerle una barra de desplazamiento vertical. La página de la que he cogido el código es esta (pongo la página en vez del código ya que sería muy largo):
http://www.java2s.com/Code/Java/Chart/JFreeChartGanttDemo1.htm
El código sólo hay que compilarlo y funciona perfectamente y para ver a lo que me refiero sólo hay que añadir más tareas (hay que poner tareas con distinto nombre, pero con que se copie una y se pegue muchas veces y se le quiten o añadan letras es suficiente).
A ver si alguien puede ayudarme.
Gracias y un saludo

PD: siento si el mensaje es un poco largo, pero es mi primer mensaje y he querido explicarme lo mejor posible.

PD2: Se me pone una "etiqueta" de [noparse] delante de la url y por eso no se pone el link directamente, no sé porqué sérá

Última edición por elpre; 01/07/2011 a las 04:45 Razón: poner url
  #2 (permalink)  
Antiguo 04/07/2011, 04:28
 
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
  #3 (permalink)  
Antiguo 05/07/2011, 01:29
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Barra de desplazamiento en un Gantt

Vuelvo a hacer respot solo para decir que ya he conseguido poner la barra de desplazamiento, solo que no funciona, jeje, pongo lo que he echo:
Código:
package org.jfree.chart.demo;

import java.awt.BorderLayout;
import java.util.Calendar;
import java.util.Date;

import javax.swing.*;

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 GanttDemo extends ApplicationFrame {
	JPanel panel;
	JScrollPane sPanel;
	JScrollBar sVert;
	final IntervalCategoryDataset dataset;
	final JFreeChart chart;
	final ChartPanel chartPanel;

    public GanttDemo(final String title) {

        super(title);

        dataset = createDataset();
        chart = createChart(dataset);

        chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        crearPanel();
        setContentPane(panel);
        //setContentPane(chartPanel);
    }
    
    public void crearPanel(){
    	panel=new JPanel(new BorderLayout());
    	
    	sPanel=new JScrollPane(chartPanel);
    	sVert=new JScrollBar(JScrollBar.VERTICAL);
    	
    	panel.add(sPanel,BorderLayout.CENTER);
    	panel.add(sVert, BorderLayout.EAST);
    }
    
    /*public void crearPanelScroll(){
    	sPanel=new JScrollPane(chartPanel);
    	sVert=new JScrollBar(JScrollBar.VERTICAL);

    	sPanel.add(sVert, BorderLayout.EAST);    	
    }*/

    public static IntervalCategoryDataset createDataset() {

        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))));
        s1.add(new Task("Design Signoff",
               new SimpleTimePeriod(date(2, Calendar.JUNE, 2001),
                                    date(2, Calendar.JUNE, 2001))));
        s1.add(new Task("Alpha Implementation",
               new SimpleTimePeriod(date(3, Calendar.JUNE, 2001),
                                    date(31, Calendar.JULY, 2001))));
        s1.add(new Task("Design Review",
               new SimpleTimePeriod(date(1, Calendar.AUGUST, 2001),
                                    date(8, Calendar.AUGUST, 2001))));
        s1.add(new Task("Revised Design Signoff",
               new SimpleTimePeriod(date(10, Calendar.AUGUST, 2001),
                                    date(10, Calendar.AUGUST, 2001))));
        s1.add(new Task("Beta Implementation",
               new SimpleTimePeriod(date(12, Calendar.AUGUST, 2001),
                                    date(12, Calendar.SEPTEMBER, 2001))));
        s1.add(new Task("Testing",
               new SimpleTimePeriod(date(13, Calendar.SEPTEMBER, 2001),
                                    date(31, 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))));
        s1.add(new Task("ignoff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Sgnoff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Sinoff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Sigoff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Signff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Signof",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Signof",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("gnoff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Snoff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Sioff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Sigff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Signf",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Signo",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("noff",
                new SimpleTimePeriod(date(28, Calendar.NOVEMBER, 2001),
                                     date(30, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("inal Implementation",
                new SimpleTimePeriod(date(1, Calendar.NOVEMBER, 2001),
                                     date(15, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Fnal Implementation",
                new SimpleTimePeriod(date(1, Calendar.NOVEMBER, 2001),
                                     date(15, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Fial Implementation",
                new SimpleTimePeriod(date(1, Calendar.NOVEMBER, 2001),
                                     date(15, Calendar.NOVEMBER, 2001))));
        s1.add(new Task("Finl Implementation",
                new SimpleTimePeriod(date(1, Calendar.NOVEMBER, 2001),
                                     date(15, 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().setMaximumCategoryLabelWidthRatio(10.0f);
        return chart;    
    }

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

        final GanttDemo demo = new GanttDemo("Gantt Chart Demo 1");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
        demo.setResizable(true);
    }
He añadido muchas tareas para que se vea que cuantas más hay las tareas se van pegando entre ellas en vez, por eso quería poner el scroll. No sé por que no funciona, alguien??

PD: Siento hacer repost pero creo que para este caso tenía que hacerlo

Etiquetas: barra, gantt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:54.