bonjour,
je travail avec "XYSeries" et ma question c'est:
es que je peut affecter une couleur différente pour une ligne entre deux points dans la meme serie...
bonjour,
je travail avec "XYSeries" et ma question c'est:
es que je peut affecter une couleur différente pour une ligne entre deux points dans la meme serie...
Tu peux créer une classe qui hérite de StandardXYItemRenderer et dans laquelle tu redéfinis la méthode getItemPaint par exemple comme ceci :
Dans mon exemple, 5D et 10 D correspondent à des valeurs de X existantes dans la XYSeries.
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 public class CustomXYItemRenderer extends StandardXYItemRenderer { public CustomXYItemRenderer() { } public Paint getItemPaint(int i, int j) { XYDataset xyDataset = getPlot().getDataset(); double x = xyDataset.getXValue(i, j); if (x > 5D & x <= 10D ) return Color.green; else return Color.red; } }
La ligne sera donc de couleur verte pour les valeurs de X comprises entre 5D et 10D.
Et ensuite, tu fais appel à cette classe comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CustomXYItemRenderer customXYItemRenderer=new CustomXYItemRenderer() ; xyPlot.setRenderer(customXYItemRenderer) ;
t'est la meilleure ;-)
merci!
bonjour,
juste une petite question :
comment faire pour appliqué cette méthode a des points plutot qu'a une courbe ?
je cherche depuis un petit moment mais je n'ai rien trouvé de convenable....
merci
Ca devrait te retourner vert pour ton point d'abscisse 10, et rouge pour le reste.
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 public class CustomXYItemRenderer extends StandardXYItemRenderer { public CustomXYItemRenderer() { } public Paint getItemPaint(int i, int j) { XYDataset xyDataset = getPlot().getDataset(); double x = xyDataset.getXValue(i, j); if (x = 10D ) return Color.green; else return Color.red; } }
pour etre tout a fait précis il faut que j'affiche des ellipses de tailles et de couleurs différentes, pour cela je défini une shape (a l'interieur d'un mouse listener)
Le problème est que lorsque je défini un CustomRenderer comme décrit plus haut, mes modification sur la shape ne sont pas prises en compte....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Ellipse2D.Double t; if (e.getClickCount() != 223) { t = new Ellipse2D.Double(0, 0, 4, 4); } else { t = new Ellipse2D.Double(0, 0, 20, 30); } rend.setShape(t);
Partager