首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

RCP项目应用jfree实现图形报表中的柱状图与曲线图

2012-07-04 
RCP项目使用jfree实现图形报表中的柱状图与曲线图此案例摘取自工作中的功能案例,简单使用不需要进行如果封

RCP项目使用jfree实现图形报表中的柱状图与曲线图

此案例摘取自工作中的功能案例,简单使用不需要进行如果封装数据.如参数类.

RCP项目使用jfree实现图形报表中的柱状图与曲线图.

结构说明:

1. JfreechartUtil.java 实现生成图表数据及生成图表.

2. PlotTempDialog.java 图表显示窗体.

3. PlotParameterVO.java 图表参数类.

4.?? PlotData.java 封装从显示的数据,从数据库获得

5. 需要相关的JAR文件支持,于附件.

执行PlotTempDialog类的main入口测试.

?

JfreechartUtil.java 

package com.yfkj.shop.util;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.lang.reflect.Method;import java.text.DecimalFormat;import java.util.List;import org.eclipse.swt.SWT;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.jfree.chart.ChartFactory;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.axis.ValueAxis;import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PiePlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.renderer.category.LineAndShapeRenderer;import org.jfree.chart.title.LegendTitle;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.data.general.DefaultPieDataset;import org.jfree.data.general.PieDataset;import org.jfree.experimental.chart.swt.ChartComposite;import com.yfkj.shop.ui.util.DialogFactory;import com.yfkj.shop.ui.util.RefMethod;/** * 图形报表工具类 *  * @author YinDang CreateTime:2011-7-15 *  */public class JfreechartUtil {/** 饼状图 **/public static final int PIE = 1;/** 柱状图 **/public static final int BAR = 2;/** 曲线图 **/public static final int LINEANDAREA = 3;/** * 创建柱状图 *  * @param dataset *            数据集 * @param xName * @param yName * @param chartTitle *            标题 * @param charName *            名称 * @param parent *            父容器 * @param chartType *            创建类型 */public static ChartComposite createBarChart(CategoryDataset dataset,String xName, String yName, String chartTitle, String charName,Composite parent) {JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 图表标题 //xName, // 目录轴的显示标签yName, // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)true, // 是否生成工具false // 是否生成URL链接);// 为一个页面上面两个图表,隐藏上面图表的X.((CategoryPlot) chart.getPlot()).getDomainAxis().setVisible(false);chart.getLegend().setVisible(false);Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12); //$NON-NLS-1$/* * VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭, * 使用的关闭抗锯齿后,字体尽量选择12到14号的宋体字,这样文字最清晰好看 */// chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);chart.setTextAntiAlias(false);// 字体模糊边界chart.setBackgroundPaint(Color.white);// create plotCategoryPlot plot = chart.getCategoryPlot();// 设置横虚线可见plot.setRangeGridlinesVisible(true);// 虚线色彩plot.setRangeGridlinePaint(Color.gray);// 数据轴精度NumberAxis vn = (NumberAxis) plot.getRangeAxis();// vn.setAutoRangeIncludesZero(true);DecimalFormat df = new DecimalFormat("#0.00"); //$NON-NLS-1$vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式// x轴设置CategoryAxis domainAxis = plot.getDomainAxis();domainAxis.setLabelFont(labelFont);// 轴标题domainAxis.setTickLabelFont(labelFont);// 轴数值// 设置图例中的字体LegendTitle legend = chart.getLegend();legend.setItemFont(labelFont); // 图示项字体// Lable(Math.PI/3.0)度倾斜domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 3.0));domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 横轴上的 Lable 是否完整显示// 设置距离图片左端距离domainAxis.setLowerMargin(0.1);// 设置距离图片右端距离domainAxis.setUpperMargin(0.1);// 设置 columnKey 是否间隔显示// domainAxis.setSkipCategoryLabelsToFit(true);plot.setDomainAxis(domainAxis);// 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)plot.setBackgroundPaint(new Color(255, 255, 204));// y轴设置ValueAxis rangeAxis = plot.getRangeAxis();rangeAxis.setLabelFont(labelFont);rangeAxis.setTickLabelFont(labelFont);// 设置最高的一个 Item 与图片顶端的距离rangeAxis.setUpperMargin(0.15);// 设置最低的一个 Item 与图片底端的距离rangeAxis.setLowerMargin(0.15);plot.setRangeAxis(rangeAxis);BarRenderer renderer = new BarRenderer();// 设置柱子宽度renderer.setMaximumBarWidth(0.1);// 设置柱子高度renderer.setMinimumBarLength(0.2);// 设置柱子边框颜色renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱子边框可见renderer.setDrawBarOutline(true);// // 设置柱的颜色// renderer.setSeriesPaint(0, new Color(204, 255, 255));// renderer.setSeriesPaint(1, new Color(153, 204, 255));// renderer.setSeriesPaint(2, new Color(51, 204, 204));// 设置每个地区所包含的平行柱的之间距离renderer.setItemMargin(0.0);// 显示每个柱的数值,并修改该数值的字体属性renderer.setIncludeBaseInRange(true);renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());renderer.setBaseItemLabelsVisible(true);plot.setRenderer(renderer);// 设置柱的透明度plot.setForegroundAlpha(1.0f);if (parent.getChildren().length > 0) {Control[] cons = parent.getChildren();for (Control control : cons) {control.dispose();}}ChartComposite composite = new ChartComposite(parent, SWT.BORDER,chart, true);composite.setLayout(new FillLayout());composite.layout();parent.layout();parent.update();return composite;}/** * 创建不带横向X轴的柱状图 *  * @param dataset *            数据集 * @param xName * @param yName * @param chartTitle *            标题 * @param charName *            名称 * @param parent *            父容器 * @param chartType *            创建类型 */public static ChartComposite createBarChartNoX(CategoryDataset dataset,String xName, String yName, String chartTitle, String charName,Composite parent) {JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 图表标题 //xName, // 目录轴的显示标签yName, // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)true, // 是否生成工具false // 是否生成URL链接);// 为一个页面上面两个图表,隐藏上面图表的X.((CategoryPlot) chart.getPlot()).getDomainAxis().setVisible(false);chart.getLegend().setVisible(false);Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12); //$NON-NLS-1$/* * VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭, * 使用的关闭抗锯齿后,字体尽量选择12到14号的宋体字,这样文字最清晰好看 */// chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);chart.setTextAntiAlias(false);// 字体模糊边界chart.setBackgroundPaint(Color.white);// create plotCategoryPlot plot = chart.getCategoryPlot();// 设置横虚线可见plot.setRangeGridlinesVisible(true);// 虚线色彩plot.setRangeGridlinePaint(Color.gray);// 数据轴精度NumberAxis vn = (NumberAxis) plot.getRangeAxis();// vn.setAutoRangeIncludesZero(true);DecimalFormat df = new DecimalFormat("#0.00"); //$NON-NLS-1$vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式// x轴设置CategoryAxis domainAxis = plot.getDomainAxis();domainAxis.setLabelFont(labelFont);// 轴标题domainAxis.setTickLabelFont(labelFont);// 轴数值// 设置图例中的字体LegendTitle legend = chart.getLegend();legend.setItemFont(labelFont); // 图示项字体// Lable(Math.PI/3.0)度倾斜domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 3.0));domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 横轴上的 Lable 是否完整显示// 设置距离图片左端距离domainAxis.setLowerMargin(0.1);// 设置距离图片右端距离domainAxis.setUpperMargin(0.1);// 设置 columnKey 是否间隔显示// domainAxis.setSkipCategoryLabelsToFit(true);plot.setDomainAxis(domainAxis);// 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)plot.setBackgroundPaint(new Color(255, 255, 204));// y轴设置ValueAxis rangeAxis = plot.getRangeAxis();rangeAxis.setLabelFont(labelFont);rangeAxis.setTickLabelFont(labelFont);// 设置最高的一个 Item 与图片顶端的距离rangeAxis.setUpperMargin(0.15);// 设置最低的一个 Item 与图片底端的距离rangeAxis.setLowerMargin(0.15);plot.setRangeAxis(rangeAxis);BarRenderer renderer = new BarRenderer();// 设置柱子宽度renderer.setMaximumBarWidth(0.1);// 设置柱子高度renderer.setMinimumBarLength(0.2);// 设置柱子边框颜色renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱子边框可见renderer.setDrawBarOutline(true);// // 设置柱的颜色// renderer.setSeriesPaint(0, new Color(204, 255, 255));// renderer.setSeriesPaint(1, new Color(153, 204, 255));// renderer.setSeriesPaint(2, new Color(51, 204, 204));// 设置每个地区所包含的平行柱的之间距离renderer.setItemMargin(0.0);// 显示每个柱的数值,并修改该数值的字体属性renderer.setIncludeBaseInRange(true);renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());renderer.setBaseItemLabelsVisible(true);plot.setRenderer(renderer);// 设置柱的透明度plot.setForegroundAlpha(1.0f);if (parent.getChildren().length > 0) {Control[] cons = parent.getChildren();for (Control control : cons) {control.dispose();}}ChartComposite composite = new ChartComposite(parent, SWT.BORDER,chart, true);composite.setLayout(new FillLayout());composite.layout();parent.layout();parent.update();return composite;}/*** * 创建柱状图数据集 *  * @param list * @param strs *            字段属性 {值,名称1,名称2} * @param doub *            是否是Double类型 * @return */public static CategoryDataset createDateSet(List<?> list, String[] strs,boolean doub) {if (list != null && list.size() > 0) {try {DefaultCategoryDataset dataset = new DefaultCategoryDataset();Double str;String str1;String str2;if (strs.length < 3) {return null;}for (Object obj : list) {str = Double.valueOf(getString(invokeGetMethod(obj,RefMethod.gainGetMethod(strs[0]))));str1 = (String) invokeGetMethod(obj,RefMethod.gainGetMethod(strs[1]));str2 = (String) invokeGetMethod(obj,RefMethod.gainGetMethod(strs[2]));dataset.setValue(str, str1, str2);}return dataset;} catch (Exception e) {DialogFactory.openWarning("请检查传入的数据是否正确!\r" + e.getMessage());}}return null;}private static String getString(Object obj) {if (obj == null)return "";if (obj.getClass() == Double.class)return NumberUtil.getSimFormatValue((Double) obj, 2);return obj.toString();}/** * 创建曲线图 *  * @param dataset *            数据集 * @param xName *            x轴显示的名称 * @param yName *            y轴显示的名称 * @param chartTitle * @param charName *            图标名称 * @param parent *            父容器 */@SuppressWarnings({ "deprecation" })public static ChartComposite createLineChart(CategoryDataset dataset,String xName, String yName, String chartTitle, String charName,Composite parent) {JFreeChart chart = ChartFactory.createLineChart(charName, xName, yName,dataset, PlotOrientation.VERTICAL, true, true, false);chart.setBackgroundPaint(Color.white);CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();categoryplot.setBackgroundPaint(Color.lightGray);categoryplot.setRangeGridlinePaint(Color.white);NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());numberaxis.setAutoRangeIncludesZero(true);// x轴设置CategoryAxis domainAxis = categoryplot.getDomainAxis();// Lable(Math.PI/3.0)度倾斜domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 3.0));// 获得renderer 注意这里是下嗍造型到lineandshaperenderer!!LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot.getRenderer();lineandshaperenderer.setShapesVisible(true); // series 点(即数据点)可见lineandshaperenderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1,1.0F, new float[] { 10F, 6F }, 0.0F)); // 定义series为”First”的(即series1)点之间的连线// ,这里是虚线,默认是直线lineandshaperenderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1,1.0F, new float[] { 6F, 6F }, 0.0F)); // 定义series为”Second”的(即series2)点之间的连线lineandshaperenderer.setSeriesStroke(2, new BasicStroke(2.0F, 1, 1,1.0F, new float[] { 2.0F, 6F }, 0.0F)); // 定义series为”Third”的(即series3)点之间的连线if (parent.getChildren().length > 0) {Control[] cons = parent.getChildren();for (Control control : cons) {control.dispose();}}ChartComposite composite = new ChartComposite(parent, SWT.BORDER,chart, true);composite.setLayout(new FillLayout());composite.layout();parent.layout();parent.update();return composite;}/** * 创建曲线图数据集 *  * @param fname *            显示名称 * @param list * @param strs *            要显示的字段名称 不少于2个 顺序{值 ,名称} * @return */public static CategoryDataset createLineDataset(String fname, List<?> list,String[] strs) {if (list != null && list.size() > 0) {try {DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();for (Object obj : list) {Double value = Double.valueOf(invokeGetMethod(obj,RefMethod.gainGetMethod(strs[0])).toString());String str = (String) invokeGetMethod(obj,RefMethod.gainGetMethod(strs[1]));defaultcategorydataset.addValue(value, fname, str);}return defaultcategorydataset;} catch (Exception e) {DialogFactory.openWarning("请检查传入的数据是否正确!\r" + e.getMessage());return null;}}return null;}/** * 执行持久类中Get方法 *  * @param owner * @param methodName */@SuppressWarnings({ "rawtypes", "unchecked" })public static Object invokeGetMethod(Object owner, String methodName) {Class ownerClass = owner.getClass();Object result = null;Method method;try {method = ownerClass.getMethod(methodName, new Class[] {});result = method.invoke(owner, new Object[] {});} catch (Exception e) {// e.printStackTrace();}return result;}/** * 创建饼状图 *  * @param dataset * @param xName * @param yName * @param chartTitle * @param charName * @param parent */public static ChartComposite createPieChart(PieDataset dataset,String xName, String yName, String chartTitle, String charName,Composite parent) {JFreeChart chart = ChartFactory.createPieChart(charName, // 图形标题名称dataset, // datasettrue, // legend?true, // tooltips?false); // URLs?PiePlot pieplot = (PiePlot) chart.getPlot(); // 通过JFreeChart 对象获得// plot:PiePlot!!pieplot.setNoDataMessage("没有数据"); // 没有数据的时候显示的内容if (parent.getChildren().length > 0) {Control[] cons = parent.getChildren();for (Control control : cons) {control.dispose();}}ChartComposite composite = new ChartComposite(parent, SWT.BORDER,chart, true);composite.setLayout(new FillLayout());composite.layout();parent.layout();parent.update();return composite;}/** * 创建饼状图数据集 *  * @param fname *            显示名称 * @param list * @param strs *            要显示的字段名称 不少于2个 顺序为 {名称 , 值} * @return */public static PieDataset createPieDataset(List<?> list, String[] strs) {if (list != null && list.size() > 0) {try {DefaultPieDataset defaultcategorydataset = new DefaultPieDataset();for (Object obj : list) {String str = (String) RefMethod.invokeGetMethod(obj,RefMethod.gainGetMethod(strs[0]));Double value = Double.valueOf(RefMethod.invokeGetMethod(obj, RefMethod.gainGetMethod(strs[1])).toString());defaultcategorydataset.setValue(str, value);}return defaultcategorydataset;} catch (Exception e) {DialogFactory.openWarning("请检查传入的数据是否正确!\r" + e.getMessage());return null;}}return null;}}

?

PlotTempDialog.java 

package com.yfkj.shop.ui.dialog;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.layout.FormAttachment;import org.eclipse.swt.layout.FormData;import org.eclipse.swt.layout.FormLayout;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Combo;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.DateTime;import org.eclipse.swt.widgets.Dialog;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Shell;import org.jfree.data.category.CategoryDataset;import com.yfkj.shop.ui.util.LayoutUtil;import com.yfkj.shop.ui.util.TimeHelper;import com.yfkj.shop.ui.vo.PlotData;import com.yfkj.shop.ui.vo.PlotParameterVO;import com.yfkj.shop.uicustom.ctable.core.framework.resource.RcpResourceManager;import com.yfkj.shop.util.JfreechartUtil;/** * 综合查询图形报表窗体 ,测试功能直接执行此类的main方法. *  * @author yindang CreateTime:2011-7-13 *  */public class PlotTempDialog extends Dialog {protected Object result;protected Shell shell;public DateTime beginTime;public DateTime endTime;public Combo cbo_sort;public Button btn_ok;public PlotParameterVO plotParameterVO;private Composite composite_qxt;private Composite composite_zxt;public PlotParameterVO getPlotParameterVO() {return plotParameterVO;}public void setPlotParameterVO(PlotParameterVO plotParameterVO) {this.plotParameterVO = plotParameterVO;}public PlotTempDialog(Shell parent, int style) {super(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);}public PlotTempDialog(Shell parent) {super(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);}public PlotTempDialog(Shell parent, String title, List<Object> list,String[] propertys, String[] displays, Date beginDate, Date endDate) {super(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);setText(title);}public Object open() {Display display = getParent().getDisplay();createContents();shell.open();LayoutUtil.centerShell(display, shell);shell.layout();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}return result;}private void createContents() {shell = new Shell(getParent(), getStyle());shell.setSize(1024, 768);shell.setText(getText());shell.setLayout(new FormLayout());Composite composite_top = new Composite(shell, SWT.NONE);{FormData fd_top = new FormData();fd_top.left = new FormAttachment(0);fd_top.top = new FormAttachment(0);fd_top.right = new FormAttachment(100);fd_top.height = 45;composite_top.setLayoutData(fd_top);composite_top.setBackgroundMode(SWT.INHERIT_DEFAULT);composite_top.setLayout(new FormLayout());composite_top.setForeground(RcpResourceManager.getColor(SWT.COLOR_BLUE));{Label l1 = new Label(composite_top, SWT.NONE);l1.setText("查询日期:");FormData fdl1 = new FormData();fdl1.top = new FormAttachment(0, 17);fdl1.left = new FormAttachment(1);l1.setLayoutData(fdl1);beginTime = new DateTime(composite_top, SWT.DROP_DOWN| SWT.BORDER);FormData fdbeginTime = new FormData();fdbeginTime.top = new FormAttachment(0, 12);fdbeginTime.left = new FormAttachment(l1, 5);beginTime.setLayoutData(fdbeginTime);if (null != plotParameterVO.getBeginDate()) {setDate(beginTime, TimeHelper.stringToTime(plotParameterVO.getBeginDate(), "yyyy-MM-dd"));}Label l2 = new Label(composite_top, SWT.NONE);l2.setText("至");FormData fdl2 = new FormData();fdl2.top = new FormAttachment(0, 17);fdl2.left = new FormAttachment(beginTime, 3);l2.setLayoutData(fdl2);endTime = new DateTime(composite_top, SWT.DROP_DOWN| SWT.BORDER);FormData fdendTime = new FormData();fdendTime.top = new FormAttachment(0, 12);fdendTime.left = new FormAttachment(l2, 3);endTime.setLayoutData(fdendTime);if (null != plotParameterVO.getEndDate()) {setDate(endTime,TimeHelper.stringToTime(plotParameterVO.getEndDate(), "yyyy-MM-dd"));}Label l3 = new Label(composite_top, SWT.NONE);l3.setText("排序方式:");FormData fdl3 = new FormData();fdl3.top = new FormAttachment(0, 17);fdl3.left = new FormAttachment(endTime, 20);l3.setLayoutData(fdl3);cbo_sort = new Combo(composite_top, SWT.BORDER | SWT.DROP_DOWN| SWT.READ_ONLY);FormData fdcbo_sort = new FormData();fdcbo_sort.top = new FormAttachment(0, 13);fdcbo_sort.left = new FormAttachment(l3, 3);cbo_sort.setLayoutData(fdcbo_sort);cbo_sort.setItems(new String[] { "按日", "按月", "按年" });cbo_sort.setData("按日", "day");cbo_sort.setData("按月", "month");cbo_sort.setData("按年", "year");cbo_sort.select(0);btn_ok = new Button(composite_top, SWT.PUSH | SWT.CENTER);FormData fdbtn_ok = new FormData();fdbtn_ok.top = new FormAttachment(0, 12);fdbtn_ok.left = new FormAttachment(cbo_sort, 25);fdbtn_ok.width = 75;btn_ok.setLayoutData(fdbtn_ok);btn_ok.setText("查询");btn_ok.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {// 从后台查询数据集合,保存进listList<PlotData> list = new ArrayList<PlotData>();String begin = getDateString(beginTime);StringBuilder builder = new StringBuilder();String type = (String) cbo_sort.getData(cbo_sort.getText());if ("month".equals(type) || "year".equals(type)) {builder.append(begin.substring(0, 6));builder.append("1-01");} else if ("day".equals(type)) {builder.append(begin);}plotParameterVO.setList(list);CategoryDataset set = JfreechartUtil.createDateSet(plotParameterVO.getList(),plotParameterVO.getPropertys(), true);JfreechartUtil.createBarChart(set,plotParameterVO.getxDisplayStr(),plotParameterVO.getyDisplayStr(),plotParameterVO.getTitle(), null, composite_qxt);CategoryDataset set2 = JfreechartUtil.createLineDataset(plotParameterVO.getTitle(),plotParameterVO.getList(),plotParameterVO.getPropertys());JfreechartUtil.createLineChart(set2,plotParameterVO.getxDisplayStr(),plotParameterVO.getyDisplayStr(),plotParameterVO.getTitle(), null, composite_zxt);}@Overridepublic void widgetDefaultSelected(SelectionEvent e) {}});}}composite_qxt = new Composite(shell, SWT.NONE);{FormData fdcomposite_qxt = new FormData();fdcomposite_qxt.left = new FormAttachment(0);fdcomposite_qxt.top = new FormAttachment(composite_top, 0);fdcomposite_qxt.right = new FormAttachment(100);fdcomposite_qxt.height = 300;composite_qxt.setLayoutData(fdcomposite_qxt);composite_qxt.setBackgroundMode(SWT.INHERIT_DEFAULT);composite_qxt.setLayout(new FillLayout());{CategoryDataset set = JfreechartUtil.createDateSet(plotParameterVO.getList(),plotParameterVO.getPropertys(), true);JfreechartUtil.createBarChartNoX(set,plotParameterVO.getxDisplayStr(),plotParameterVO.getyDisplayStr(),plotParameterVO.getTitle(), null, composite_qxt);}}composite_zxt = new Composite(shell, SWT.NONE);{FormData fdcomposite_zxt = new FormData();fdcomposite_zxt.left = new FormAttachment(0);fdcomposite_zxt.top = new FormAttachment(composite_qxt, -1);fdcomposite_zxt.right = new FormAttachment(100);fdcomposite_zxt.bottom = new FormAttachment(100);composite_zxt.setLayoutData(fdcomposite_zxt);composite_zxt.setBackgroundMode(SWT.INHERIT_DEFAULT);composite_zxt.setLayout(new FillLayout());{CategoryDataset set = JfreechartUtil.createLineDataset(plotParameterVO.getTitle(), plotParameterVO.getList(),plotParameterVO.getPropertys());JfreechartUtil.createLineChart(set,plotParameterVO.getxDisplayStr(),plotParameterVO.getyDisplayStr(),plotParameterVO.getTitle(), null, composite_zxt);}}}/** * 从DateTime日期控件取得值 格式为:yyyy-MM-dd */public static String getDateString(DateTime dateTime) {String value = dateTime.getYear()+ "-"+ ((dateTime.getMonth() + 1) > 9 ? (dateTime.getMonth() + 1): "0" + (dateTime.getMonth() + 1))+ "-"+ (dateTime.getDay() > 9 ? dateTime.getDay() : "0"+ dateTime.getDay());return value;}/** * 给DateTime日期控件附值 */public static void setDate(DateTime dateTime, Date date) {if (date == null)return;Calendar cal = Calendar.getInstance();cal.setTime(date);dateTime.setDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH));dateTime.redraw();}public static void main(String[] str) {PlotTempDialog dia = new PlotTempDialog(new Shell());dia.initdata();dia.open();}private void initdata() {List<PlotData> list = new ArrayList<PlotData>();for (int i = 0; i < 5; i++) {PlotData bean = new PlotData();bean.setFje(new Double(i + 1));bean.setFrq(i + "周");list.add(bean);}this.plotParameterVO = new PlotParameterVO();this.plotParameterVO.setTitle("welcome you!图表测试");this.plotParameterVO.setList(list);this.plotParameterVO.setPropertys(new String[] { "fje", "frq", "frq" });this.plotParameterVO.setxDisplayStr("周期");this.plotParameterVO.setyDisplayStr("金额");}}class Bean {private Double je;private String rq;private String name;public Double getJe() {return je;}public void setJe(Double je) {this.je = je;}public String getRq() {return rq;}public void setRq(String rq) {this.rq = rq;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

?

?

PlotParameterVO.java

package com.yfkj.shop.ui.vo;import java.io.Serializable;import java.util.List;/** * 综合信息图表参数实体 *  * @author YinDang CreateTime:2011-7-14 *  */public class PlotParameterVO implements Serializable {/** *  */private static final long serialVersionUID = 5621514121349597113L;/** * 要显示的值集合 */public List<PlotData> list;public List<PlotData> getList() {return list;}public void setList(List<PlotData> list) {this.list = list;}/** * 与集合对象匹配的属性 第一项数值类型 第二项为String 第三项为标题,不写取构造处的TITLE */public String[] propertys;/** * 对应X轴的显示字样 */public String xDisplayStr;/** * 对应Y轴的显示字样 */public String yDisplayStr;public String[] getPropertys() {return propertys;}public void setPropertys(String[] propertys) {this.propertys = propertys;}public String getxDisplayStr() {return xDisplayStr;}public void setxDisplayStr(String xDisplayStr) {this.xDisplayStr = xDisplayStr;}public String getyDisplayStr() {return yDisplayStr;}public void setyDisplayStr(String yDisplayStr) {this.yDisplayStr = yDisplayStr;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}/** * 主窗体的名称 */public String title;/** * 起始时间 */public String beginDate;/** * 结束时间 */public String endDate;public String getBeginDate() {return beginDate;}public void setBeginDate(String beginDate) {this.beginDate = beginDate;}public String getEndDate() {return endDate;}public void setEndDate(String endDate) {this.endDate = endDate;};}

?

PlotData.java

package com.yfkj.shop.ui.vo;import java.io.Serializable;/** * 图形报表数据封装类 *  * @author YinDang CreateTime:2011-7-15 *  */public class PlotData implements Serializable {/** *  */private static final long serialVersionUID = -8805815579861940941L;private String frq;private Double fje;private String fsl;public String getFrq() {return frq;}public void setFrq(String frq) {this.frq = frq;}public Double getFje() {return fje;}public void setFje(Double fje) {this.fje = fje;}public String getFsl() {return fsl;}public void setFsl(String fsl) {this.fsl = fsl;}}

?

?

----------------工作积累 尹当?

?

?

热点排行