KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > experimental > chart > demo > XYBlockChartDemo1


1 /* ----------------------
2  * XYBlockChartDemo1.java
3  * ----------------------
4  * (C) Copyright 2006, by Object Refinery Limited.
5  *
6  */

7
8 package org.jfree.experimental.chart.demo;
9
10 import java.awt.Color JavaDoc;
11
12 import javax.swing.JPanel JavaDoc;
13
14 import org.jfree.chart.ChartPanel;
15 import org.jfree.chart.JFreeChart;
16 import org.jfree.chart.axis.NumberAxis;
17 import org.jfree.chart.plot.XYPlot;
18 import org.jfree.data.DomainOrder;
19 import org.jfree.data.general.DatasetChangeListener;
20 import org.jfree.data.general.DatasetGroup;
21 import org.jfree.data.xy.XYZDataset;
22 import org.jfree.experimental.chart.renderer.GrayPaintScale;
23 import org.jfree.experimental.chart.renderer.PaintScale;
24 import org.jfree.experimental.chart.renderer.xy.XYBlockRenderer;
25 import org.jfree.ui.ApplicationFrame;
26 import org.jfree.ui.RefineryUtilities;
27
28 /**
29  * A simple demonstration application showing a chart created using
30  * the {@link XYBlockRenderer}.
31  * <br><br>
32  * TODO: The chart needs a display showing the value scale.
33  */

34 public class XYBlockChartDemo1 extends ApplicationFrame {
35
36     /**
37      * Constructs the demo application.
38      *
39      * @param title the frame title.
40      */

41     public XYBlockChartDemo1(String JavaDoc title) {
42         super(title);
43         JPanel JavaDoc chartPanel = createDemoPanel();
44         chartPanel.setPreferredSize(new java.awt.Dimension JavaDoc(500, 270));
45         setContentPane(chartPanel);
46     }
47     
48     /**
49      * Creates a sample chart.
50      *
51      * @param dataset the dataset.
52      *
53      * @return A sample chart.
54      */

55     private static JFreeChart createChart(XYZDataset dataset) {
56         NumberAxis xAxis = new NumberAxis("X");
57         xAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
58         xAxis.setLowerMargin(0.0);
59         xAxis.setUpperMargin(0.0);
60         NumberAxis yAxis = new NumberAxis("Y");
61         yAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
62         yAxis.setLowerMargin(0.0);
63         yAxis.setUpperMargin(0.0);
64         XYBlockRenderer renderer = new XYBlockRenderer();
65         PaintScale scale = new GrayPaintScale(-2.0, 1.0);
66         renderer.setPaintScale(scale);
67         XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
68         plot.setBackgroundPaint(Color.lightGray);
69         plot.setDomainGridlinesVisible(false);
70         plot.setRangeGridlinePaint(Color.white);
71         JFreeChart chart = new JFreeChart("XYBlockChartDemo1", plot);
72         chart.removeLegend();
73         chart.setBackgroundPaint(Color.white);
74         return chart;
75     }
76     
77     /**
78      * Creates a sample dataset.
79      */

80     private static XYZDataset createDataset() {
81         return new XYZDataset() {
82             public int getSeriesCount() {
83                 return 1;
84             }
85             public int getItemCount(int series) {
86                 return 10000;
87             }
88             public Number JavaDoc getX(int series, int item) {
89                 return new Double JavaDoc(getXValue(series, item));
90             }
91             public double getXValue(int series, int item) {
92                 return item / 100 - 50;
93             }
94             public Number JavaDoc getY(int series, int item) {
95                 return new Double JavaDoc(getYValue(series, item));
96             }
97             public double getYValue(int series, int item) {
98                 return item - (item / 100) * 100 - 50;
99             }
100             public Number JavaDoc getZ(int series, int item) {
101                 return new Double JavaDoc(getZValue(series, item));
102             }
103             public double getZValue(int series, int item) {
104                 double x = getXValue(series, item);
105                 double y = getYValue(series, item);
106                 return Math.sin(Math.sqrt(x * x + y * y) / 5.0);
107             }
108             public void addChangeListener(DatasetChangeListener listener) {
109                 // ignore - this dataset never changes
110
}
111             public void removeChangeListener(DatasetChangeListener listener) {
112                 // ignore
113
}
114             public DatasetGroup getGroup() {
115                 return null;
116             }
117             public void setGroup(DatasetGroup group) {
118                 // ignore
119
}
120             public Comparable JavaDoc getSeriesKey(int series) {
121                 return "sin(sqrt(x + y))";
122             }
123             public int indexOf(Comparable JavaDoc seriesKey) {
124                 return 0;
125             }
126             public DomainOrder getDomainOrder() {
127                 return DomainOrder.ASCENDING;
128             }
129         };
130     }
131     
132     /**
133      * Creates a panel for the demo.
134      *
135      * @return A panel.
136      */

137     public static JPanel JavaDoc createDemoPanel() {
138         return new ChartPanel(createChart(createDataset()));
139     }
140     
141     /**
142      * Starting point for the demonstration application.
143      *
144      * @param args ignored.
145      */

146     public static void main(String JavaDoc[] args) {
147         XYBlockChartDemo1 demo = new XYBlockChartDemo1("Block Chart Demo");
148         demo.pack();
149         RefineryUtilities.centerFrameOnScreen(demo);
150         demo.setVisible(true);
151     }
152
153 }
154
Popular Tags