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 件のコメント:
コメントを投稿