`
vwpolo
  • 浏览: 192972 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

5.4、使用BIRT API创建Chart

阅读更多
public class CreateChartReport implements PaintListener{

	public static final String BIRT_HOME = "D:/DeveloperTools/birt-runtime-2_3_1/ReportEngine";
	
	private IDeviceRenderer iDeviceRenderer;
	
	private Chart chart;
	
	public CreateChartReport() {
		final PluginSettings pluginSettings = PluginSettings.instance();
		try {
			iDeviceRenderer = pluginSettings.getDevice("dv.SWT");
		}catch (Exception e) {
			e.printStackTrace();
		}
		chart = createMyChart();
	}
	
	public static Chart createMyChart() {
		ChartWithAxes chartWithAxes = ChartWithAxesImpl.create();
		chartWithAxes.getBlock().setBackground(ColorDefinitionImpl.WHITE());
		chartWithAxes.getBlock().getOutline().setVisible(true);
		chartWithAxes.setDimension(ChartDimension.TWO_DIMENSIONAL_WITH_DEPTH_LITERAL);
		
		//customize the plot
		Plot plot = chartWithAxes.getPlot();
		plot.getClientArea().setBackground(ColorDefinitionImpl.create(255, 255,255));
		plot.getOutline().setVisible(false);
		
		chartWithAxes.getTitle().getLabel().getCaption().setValue("Simple Bar Chart");
		
		//customize the legend
		Legend legend = chartWithAxes.getLegend();
		legend.getText().getFont().setSize(16);
		legend.getInsets().set(10, 5, 0, 0);
		legend.setAnchor(Anchor.NORTH_LITERAL);
		
		//customize the x-axis
		Axis xAxisPrimary = chartWithAxes.getPrimaryBaseAxes()[0];
		xAxisPrimary.setType(AxisType.TEXT_LITERAL);
		xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LITERAL);
		xAxisPrimary.getOrigin().setType(IntersectionType.VALUE_LITERAL);
		xAxisPrimary.getTitle().setVisible(false);
		
		Axis yAxisPrimary = chartWithAxes.getPrimaryOrthogonalAxis(xAxisPrimary);
		yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITERAL);
		yAxisPrimary.setType(AxisType.LINEAR_LITERAL);
		yAxisPrimary.getLabel().getCaption().getFont().setRotation(90);
		
		//initialize a collection with the x-series data
		Vector vs = new Vector();
		vs.add("zero");
		vs.add("one");
		vs.add("two");
		vs.add("three");
		
		TextDataSet categoryValues = TextDataSetImpl.create(vs);
		
		//initialize a collectioin with the y-serise data
		ArrayList vn1 = new ArrayList();
		vn1.add(new Double(25));
		vn1.add(new Double(35));
		vn1.add(new Double(-45));
		vn1.add(new Double(60));
		
		NumberDataSet orthoValue1 = NumberDataSetImpl.create(vn1);
		
		//create the category base series;
		Series seCategory = SeriesImpl.create();
		seCategory.setDataSet(categoryValues);
		
		//create the value orthogonal series
		BarSeries bs1 = (BarSeries)BarSeriesImpl.create();
		bs1.setSeriesIdentifier("My Bar Series");
		bs1.setDataSet(orthoValue1);
		bs1.setRiserOutline(null);
		bs1.getLabel().setVisible(true);
		bs1.setLabelPosition(Position.INSIDE_LITERAL);
		
		//create the value orthogonal series
//		BarSeries bs2 = (BarSeries)BarSeriesImpl.create();
//		bs2.setSeriesIdentifier("My Bar Series 2");
//		bs2.setDataSet(orthoValue1);
//		bs2.setRiserOutline(null);
//		bs2.getLabel().setVisible(true);
//		bs2.setLabelPosition(Position.BELOW_LITERAL);
		
		//wrap the base series in the x-axis series definiation
		SeriesDefinition sdx = SeriesDefinitionImpl.create();
		sdx.getSeriesPalette().shift(0);
		xAxisPrimary.getSeriesDefinitions().add(sdx);
		sdx.getSeries().add(seCategory);
		
		//wrap the orthogonal series in the x-axis series definal
		SeriesDefinition sdy = SeriesDefinitionImpl.create();
		sdy.getSeriesPalette().shift(1);
		yAxisPrimary.getSeriesDefinitions().add(sdy);
		sdy.getSeries().add(bs1);
		
		return chartWithAxes;
	}
	
	@Override
	public void paintControl(PaintEvent pe) {
		iDeviceRenderer.setProperty(IDeviceRenderer.GRAPHICS_CONTEXT, pe.gc);
		Composite composite = (Composite)pe.getSource();
		Rectangle rect = composite.getClientArea();
		Bounds bounds = BoundsImpl.create(rect.x, rect.y, rect.width, rect.height);
		bounds.scale(72d/iDeviceRenderer.getDisplayServer().getDpiResolution());
		Generator generator = Generator.instance();
		try {
			generator.render(iDeviceRenderer, generator.build(iDeviceRenderer.getDisplayServer(), chart, null, bounds, null));
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		CreateChartReport chartReport = new CreateChartReport();
		GridLayout gridLayout = new GridLayout();
		gridLayout.numColumns  =1;
		Display display = Display.getDefault();
		Shell shell = new Shell(display);
		shell.setSize(900, 700);
		shell.setLayout(gridLayout);
		shell.setText(chartReport.getClass().getName()+"[device="+chartReport.iDeviceRenderer.getClass().getName()+"]");
		GridData gridData = new GridData(GridData.FILL_BOTH);
		Canvas canvas = new Canvas(shell, SWT.NONE);
		canvas.setLayoutData(gridData);
		canvas.addPaintListener(chartReport);
		shell.open();
		while(!shell.isDisposed()) {
			if(!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}
}

 

执行结果如下:



 

  • 大小: 52.9 KB
分享到:
评论
1 楼 slieer 2009-08-13  
你创建的是什么工程?这代码不完整吧?能否做详细的说明呢?谢谢。

相关推荐

    birt _api和·birt_chart_api

    它们是BIRT官方提供的帮助文档,包含详细的API参考、示例代码和教程,可以帮助开发者快速理解和使用Birt API及Birt Chart API。 总的来说,掌握Birt API和Birt Chart API对于进行基于BIRT的项目开发至关重要。通过...

    birt api动态创建表格

    在BIRT中,你可以通过API创建ReportDesign对象,并添加各种元素,如表格(Table)、图表(Chart)等。`CreateTable.java`可能包含了初始化表格模型、设置列宽、行高、字体样式以及数据绑定等操作。例如,它可能调用`...

    birt_api.CHM

    《birt_chart_api.CHM》则专门针对BIRT的图表功能,BIRT的图表模块强大且灵活,支持多种图表类型,如柱状图、折线图、饼图等。这个CHM文件可能详细解释了如何使用API创建、配置和定制图表,包括设置图表属性、数据...

    birt API说明文档

    **BIRT(Business Intelligence and Reporting Tools)API 详解** ...通过深入理解和熟练使用BIRT API,你可以创建出满足各种需求的高质量报表。同时,不断更新的文档和社区支持使得学习和解决问题更加容易。

    birt api 实现动态列参数报表

    在BIRT API中,我们可以使用`IReportDesign`和`IDataSource`接口创建和操作数据集。通过`IQuery`接口,可以设置SQL查询,动态插入`columnNames`中的列。例如,使用Java代码可能如下: ```java IReportRunnable ...

    Birt API Demo

    总结来说,"Birt API Demo"是一个展示如何使用BIRT API在Java环境中动态生成Excel和报表的示例。通过这个Demo,开发者可以学习到如何初始化ReportEngine、打开报表设计、设置参数、运行报表以及导出报表等一系列操作...

    birt API 动态创建交叉表

    在"dynamicxtab.rptdesign"这个文件中,很可能包含了用于演示或示例的BIRT报表设计,这个设计可能展示了如何使用BIRT API动态创建交叉表的代码和配置。通过打开并分析这个文件,我们可以更深入地理解上述知识点,并...

    birt 以及API使用详细读解

    学习和掌握BIRT API的使用,不仅可以让你创建出功能丰富的报表,还能帮助你将报表系统无缝地集成到现有的应用程序中,提高工作效率,提升用户体验。深入理解和实践BIRT的API,对于任何希望在业务智能领域有所建树的...

    birt学习必备官方api

    6. **Chart API**:BIRT的图表组件提供了一套完整的API,用于创建各种类型的图表,并进行样式和行为的定制。 7. **Web Viewer API**:用于在Web应用程序中嵌入BIRT报表查看器。开发者可以利用此API控制报表的显示和...

    Birt chart 动态尺寸

    在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一个开源的报表系统,它提供了一种强大的图表生成能力,使得开发者可以轻松地在Web应用中创建交互式和视觉吸引人的图表。"Birt chart 动态尺寸"这...

    birt api 以及新手入门文档

    通过阅读提供的`birt_api.CHM`和`23214513216.chm`文档,你可以详细了解到BIRT API的每个类和方法,以及具体的使用示例。这些文档是学习BIRT开发的重要参考资料,建议结合实际编码实践,逐步掌握BIRT的强大功能。 ...

    birt api生成报表

    主要根据BIRT API来动态生成报表的pdf,word等格式,导出到某一目录,希望对做birt报表的朋友有用。

    birt_api帮助文档.rar

    在“birt_api帮助文档”中,你可以找到关于如何使用BIRT API进行开发的详细信息。这个CHM文件(Compiled Help Manual)通常包含了API的详细参考,包括类、接口、方法和属性的描述,以及使用示例。 1. **BIRT API...

    eclipse birt chart engine example resource code

    "Eclipse BIRT Chart Engine Example Resource Code" 提供的是一个示例资源代码库,帮助开发者更好地理解和使用BIRT图表引擎。 **BIRT图表引擎核心概念:** 1. **图表引擎**:这是BIRT的核心组件之一,负责生成...

    birt api 帮助文档

    birt api 帮助文档。 对于使用birt开发报表的开发人员绝对有帮助。

    birt报表 API 实例 2.rar

    6. **实例分析**:压缩包中的"birt报表实例2"可能包含了一个或多个具体的代码示例,演示了如何使用BIRT API创建和运行报表。这些实例可能会覆盖从数据源创建、报表设计、数据填充到最终的报表渲染全过程。 通过学习...

    Birt使用经验谈 Chart图(doc)

    【Birt使用经验谈——Chart图】 Birt是一款开源的报表工具,用于生成复杂的报表和图表。这篇文档主要介绍如何在Birt中设计和创建Chart图表。以下是对Birt Chart图设计步骤的详细说明: 1. **环境配置**:虽然在...

    birt报表的官方API

    1. **Report Designer API**:这是BIRT的图形化报告设计界面所使用的API,允许开发者创建、编辑和管理报表模板。它提供了诸如添加数据源、创建数据集、插入图表和表格等操作的接口。 2. **Engine API**:在运行时,...

    birt chart api chm格式

    birt chart api 特不喜欢在eclipse里的help里找,所以制作了这个chm格式电子书,和jdk一样,很方便使用。

    birt api chm格式电子书

    birt api,特不喜欢在eclipse里的help里找,所以制作了这个chm格式电子书,和jdk一样,很方便使用。

Global site tag (gtag.js) - Google Analytics