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