大梦想家

5年开发工程师,2年实施经理,X年售前顾问,......
数据加载中……
SWT中使用JFreeChart(无需SWT_AWT)
    好像从1.03开始Jfc就已经提供了在SWT中使用JFC的专用包和类,只是没有人写这些东西而已~今天我就贴一些Demo,以后再也不用SWT_AWT了~
  1/* ===========================================================
  2 * JFreeChart : a free chart library for the Java(tm) platform
  3 * ===========================================================
  4 *
  5 * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors.
  6 *
  7 * Project Info:  http://www.jfree.org/jfreechart/index.html
  8 *
  9 * This library is free software; you can redistribute it and/or modify it 
 10 * under the terms of the GNU Lesser General Public License as published by 
 11 * the Free Software Foundation; either version 2.1 of the License, or 
 12 * (at your option) any later version.
 13 *
 14 * This library is distributed in the hope that it will be useful, but 
 15 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 16 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
 17 * License for more details.
 18 *
 19 * You should have received a copy of the GNU Lesser General Public
 20 * License along with this library; if not, write to the Free Software
 21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
 22 * USA.  
 23 *
 24 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
 25 * in the United States and other countries.]
 26 *
 27 * ---------------------
 28 * SWTBarChartDemo1.java
 29 * ---------------------
 30 * (C) Copyright 2006, 2007, by Object Refinery Limited and Contributors.
 31 *
 32 * Original Author:  David Gilbert (for Object Refinery Limited);
 33 * Contributor(s):
 34 *
 35 * Changes
 36 * -------
 37 * 23-Aug-2006 : New class (DG);
 38 * 
 39 */

 40
 41package org.jfree.experimental.chart.swt.demo;
 42
 43import java.awt.Color;
 44
 45import org.eclipse.swt.SWT;
 46import org.eclipse.swt.layout.FillLayout;
 47import org.eclipse.swt.widgets.Display;
 48import org.eclipse.swt.widgets.Shell;
 49import org.jfree.chart.ChartFactory;
 50import org.jfree.chart.JFreeChart;
 51import org.jfree.chart.axis.CategoryAxis;
 52import org.jfree.chart.axis.CategoryLabelPositions;
 53import org.jfree.chart.axis.NumberAxis;
 54import org.jfree.chart.plot.CategoryPlot;
 55import org.jfree.chart.plot.PlotOrientation;
 56import org.jfree.chart.renderer.category.BarRenderer;
 57import org.jfree.data.category.CategoryDataset;
 58import org.jfree.data.category.DefaultCategoryDataset;
 59import org.jfree.experimental.chart.swt.ChartComposite;
 60
 61/**
 62 * An SWT demo.
 63 */

 64public class SWTBarChartDemo1 {
 65    
 66    /**
 67     * Returns a sample dataset.
 68     * 
 69     * @return The dataset.
 70     */

 71    private static CategoryDataset createDataset() {
 72        
 73        // row keys
 74        String series1 = "First";
 75        String series2 = "Second";
 76        String series3 = "Third";
 77
 78        // column keys
 79        String category1 = "Category 1";
 80        String category2 = "Category 2";
 81        String category3 = "Category 3";
 82        String category4 = "Category 4";
 83        String category5 = "Category 5";
 84
 85        // create the dataset
 86        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 87
 88        dataset.addValue(1.0, series1, category1);
 89        dataset.addValue(4.0, series1, category2);
 90        dataset.addValue(3.0, series1, category3);
 91        dataset.addValue(5.0, series1, category4);
 92        dataset.addValue(5.0, series1, category5);
 93
 94        dataset.addValue(5.0, series2, category1);
 95        dataset.addValue(7.0, series2, category2);
 96        dataset.addValue(6.0, series2, category3);
 97        dataset.addValue(8.0, series2, category4);
 98        dataset.addValue(4.0, series2, category5);
 99
100        dataset.addValue(4.0, series3, category1);
101        dataset.addValue(3.0, series3, category2);
102        dataset.addValue(2.0, series3, category3);
103        dataset.addValue(3.0, series3, category4);
104        dataset.addValue(6.0, series3, category5);
105        
106        return dataset;
107        
108    }

109    
110    /**
111     * Creates a sample chart.
112     * 
113     * @param dataset  the dataset.
114     * 
115     * @return The chart.
116     */

117    private static JFreeChart createChart(CategoryDataset dataset) {
118        
119        // create the chart
120        JFreeChart chart = ChartFactory.createBarChart(
121            "Bar Chart Demo",         // chart title
122            "Category",               // domain axis label
123            "Value",                  // range axis label
124            dataset,                  // data
125            PlotOrientation.VERTICAL, // orientation
126            true,                     // include legend
127            true,                     // tooltips?
128            false                     // URLs?
129        );
130
131        // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART
132
133        // set the background color for the chart
134        chart.setBackgroundPaint(Color.white);
135
136        // get a reference to the plot for further customisation
137        CategoryPlot plot = (CategoryPlot) chart.getPlot();
138        plot.setBackgroundPaint(Color.lightGray);
139        plot.setDomainGridlinePaint(Color.white);
140        plot.setDomainGridlinesVisible(true);
141        plot.setRangeGridlinePaint(Color.white);
142
143        // set the range axis to display integers only
144        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
145        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
146
147        // disable bar outlines
148        BarRenderer renderer = (BarRenderer) plot.getRenderer();
149        renderer.setDrawBarOutline(false);
150
151        CategoryAxis domainAxis = plot.getDomainAxis();
152        domainAxis.setCategoryLabelPositions(
153            CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)
154        );
155        // OPTIONAL CUSTOMISATION COMPLETED.
156        
157        return chart;
158        
159    }

160    
161    /**
162     * Starting point for the demonstration application.
163     *
164     * @param args  ignored.
165     */

166    public static void main( String[] args ) 
167    {
168        JFreeChart chart = createChart(createDataset());
169        Display display = new Display();
170        Shell shell = new Shell(display);
171        shell.setSize(600300);
172        shell.setLayout(new FillLayout());
173        shell.setText("Test for jfreechart running with SWT");
174        final ChartComposite frame = new ChartComposite(shell, SWT.NONE, chart,
175                true);
176        frame.pack();
177        shell.open();
178        while (!shell.isDisposed()) {
179            if (!display.readAndDispatch())
180                display.sleep();
181        }

182    }

183
184}

185
186
187
这个是JFC里面自带的一个例子,例子里面使用了一个ChartComposite来放置chart对象~这样对使用者来说更加方便了,其实JFC的SWT包下还有好几个很好用的类,只是没有文档而已~
更重要的是SWT_AWT主要是将AWT嵌入SWT中,而ChartComposite则是将chart对象直接转换为SWT中的东东,连右键都是SWT的了~

客户虐我千百遍,我待客户如初恋!

posted on 2007-08-21 09:22 阿南 阅读(3981) 评论(2)  编辑  收藏 所属分类: 西安java用户群Eclipse-SWT

评论

# re: SWT中使用JFreeChart(无需SWT_AWT)[未登录] 2007-08-21 17:37 寒武纪

这样应该比SWT_AWT桥接方式要稳定。
  回复  更多评论    

# re: SWT中使用JFreeChart(无需SWT_AWT) 2012-01-31 15:27 cala

@寒武纪
我的JFreeChart怎么没有ChartComposite!! 求指点!!!
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: