import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class swingTestSlider extends ApplicationFrame {
private static class DemoPanel extends JPanel implements ChangeListener {
JSlider slider;
ValueAxis xAxis;
XYSeries series;
public DemoPanel() {
super(new BorderLayout());
IntervalXYDataset dataset = createDataset();
JFreeChart chart = createChart(dataset);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(600, 270));
add(chartPanel);
JPanel panel = new JPanel(new BorderLayout());
this.slider = new JSlider();
slider.setMaximum(series.getItemCount());
slider.setValue(series.getItemCount());
this.slider.addChangeListener(this);
panel.add(this.slider);
add(panel, BorderLayout.SOUTH);
}
private JFreeChart createChart(IntervalXYDataset dataset) {
final JFreeChart chart = ChartFactory.createXYBarChart(
"IntervalXYDataset", "X", false, "Y", dataset,
PlotOrientation.VERTICAL, true, true, false);
XYPlot plot = (XYPlot) chart.getPlot();
NumberAxis numberaxis = (NumberAxis) plot.getDomainAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
xAxis = plot.getDomainAxis();
xAxis.setAutoRange(false);
xAxis.setRange(80, 100);
plot.setRenderer(new XYBarRenderer());
XYBarRenderer renderer = (XYBarRenderer) chart.getXYPlot().getRenderer();
renderer.setMargin(0.1);;
return chart;
}
/*
* グラフデータを作る
*/
private IntervalXYDataset createDataset() {
series = new XYSeries("XYSeriesデータ");
for ( int i = 1 ; i < 101 ; i++){
series.add(i, 100+i);
}
final XYSeriesCollection dataset = new XYSeriesCollection(series);
return dataset;
}//グラフデータを作るここまで
@Override
public void stateChanged(ChangeEvent event) {
xAxis.setRange(slider.getValue()-20, slider.getValue());
//System.out.println(slider.getValue());
}
}//class MakePanel ここまで
public swingTestSlider(String title) {
super(title);
setContentPane(new DemoPanel());
}
public static JPanel createDemoPanel() {
return new DemoPanel();
}
public static void main(String[] args) {
swingTestSlider demo = new swingTestSlider("XYBarChart");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
2011年9月13日火曜日
棒グラフ-IntervalXYDataset
登録:
コメントの投稿 (Atom)

0 件のコメント:
コメントを投稿