IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Graphisme Java Discussion :

[JFreeChart] modification SeriesPaint


Sujet :

Graphisme Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Par défaut [JFreeChart] modification SeriesPaint
    Bonjour,

    Je viens de me mettre à l'utilisation de JFreeChart et j'aimerais savoir comment modifier le rendu pour mon XYLineChart. Je me suis créé une classe : Graphique qui hérite de JPanel et qui contient mon dessin. J'utilise XYSeriesCollection pour stocker mes series et DefaultXYItemRenderer pour pouvoir modifier la couleur de mes lignes. Tout fonctionne tres bien si j ajoute une serie a mon dessin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void AjouterXYSeries(XYSeries pSerie, Color pCouleur)
    	{
    		if(pSerie != null)
    		{
    			coll.addSeries(pSerie);
    			rendu.setSeriesPaint(coll.getSeriesCount()-1, pCouleur);
    		}
    	}
    par contre si je veux en retirer une je ne sais pas comment faire pour modifier également la représentation dans le renderer car mon dessin s'affiche bien avec une série en moins mais les couleurs ne sont plus bonnes.

    La classe Graphique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    package GUI;
     
    import java.awt.Color;
    import javax.swing.JPanel;
    import metier.CLVehicules;
    import org.jfree.chart.*;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.xy.*;
    import org.jfree.data.xy.*;
     
    public class graphique extends JPanel 
    {
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private XYSeriesCollection coll;
    	private DefaultXYItemRenderer rendu;
     
    	public graphique()
    	{		
    		setBackground(Color.white);	
    		coll = new XYSeriesCollection();
    		rendu = new DefaultXYItemRenderer();
    	}
     
    	public void AjouterXYSeries(XYSeries pSerie, Color pCouleur)
    	{
    		if(pSerie != null)
    		{
    			coll.addSeries(pSerie);
    			rendu.setSeriesPaint(coll.getSeriesCount()-1, pCouleur);
    		}
    	}
     
    	public void CreerGraphique()
    	{
    		XYDataset dataset = coll;
    		JFreeChart graph = ChartFactory.createXYLineChart("Consommation Essence", "date", "l/100km", dataset, PlotOrientation.VERTICAL, true, true, false);
    		graph.getXYPlot().setRenderer(rendu);
    		ChartPanel pan = new ChartPanel(graph);
    		add(pan);
    	}
     
    	public void ModifierGraphique(CLVehicules pVehicule, EGraphiqueAction pAction)
    	{
    		switch(pAction)
    		{
    			case Ajouter :
    			{
    				AjouterXYSeries(pVehicule.CreerXYSeries(), pVehicule.getCouleur());
    				break;
    			}
    			case Supprimer :
    			{
    				coll.removeSeries(pVehicule.CreerXYSeries());
    				// mofifier le renderer
    				break;
    			}			
    		}
    		CreerGraphique();
    	}		
    }
    Si quelqu'un a une petite suggestion, elle est la bienvenue merci d'avance a vous

  2. #2
    Membre éprouvé Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Par défaut
    Pour finir je m'en suis sorti autrement.

    Dans ma fenetre, au chargement je dessine mon graphique de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public void GenererGraphique()
    	{
    		Iterator<CLVehicules> iter = mesVehicules.iterator();
    		while(iter.hasNext())
    		{
    			CLVehicules vehicule = iter.next();
    			if(vehicule.getAffichage())
    			{
    				monGraph.AjouterXYSeries(vehicule.CreerXYSeries(), vehicule.getCouleur());
    			}
    		}
    		monGraph.CreerGraphique();
    	}
    Puis dans le programme lorsque l'on coche ou decoche l affichage d un vehicule j appelle la meme methode surchargée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public void GenererGraphique(CLVehicules pVehicule)
    	{
    		monGraph.ViderGraphique();
    		Iterator<CLVehicules> iter = mesVehicules.iterator();
    		while(iter.hasNext())
    		{
    			CLVehicules vehicule = iter.next();
    			if(vehicule.equals(pVehicule))
    			{
    				vehicule = pVehicule;
    			}
    			if(vehicule.getAffichage())
    			{				
    				monGraph.AjouterXYSeries(vehicule.CreerXYSeries(), vehicule.getCouleur());
    			}
    		}
    		monGraph.CreerGraphique();
    	}
    J ai donc ajouté la methode ViderGraphique dans ma classe Graphique qui permet de vider la collection XYSeriesCollection et les seriesPaint du DefaultXYItemRenderer puis apres je reconstruit mon graphique entierement grace a CreerGraphique.

    A bientot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JFreeChart] Modification du Shape sans effet
    Par erox44 dans le forum 2D
    Réponses: 0
    Dernier message: 17/10/2013, 15h19
  2. [JFreeChart] Modification/Ajout d'une legende
    Par Adriano1664 dans le forum 2D
    Réponses: 2
    Dernier message: 13/08/2009, 21h41
  3. [JFreeChart] Modification Tooltips
    Par MasterChief78 dans le forum 2D
    Réponses: 2
    Dernier message: 05/05/2008, 17h10
  4. JfreeChart modification abscisse
    Par dknet dans le forum 2D
    Réponses: 1
    Dernier message: 19/09/2006, 13h41
  5. Réponses: 2
    Dernier message: 22/06/2005, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo