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
分享到:
相关推荐
它们是BIRT官方提供的帮助文档,包含详细的API参考、示例代码和教程,可以帮助开发者快速理解和使用Birt API及Birt Chart API。 总的来说,掌握Birt API和Birt Chart API对于进行基于BIRT的项目开发至关重要。通过...
在BIRT中,你可以通过API创建ReportDesign对象,并添加各种元素,如表格(Table)、图表(Chart)等。`CreateTable.java`可能包含了初始化表格模型、设置列宽、行高、字体样式以及数据绑定等操作。例如,它可能调用`...
《birt_chart_api.CHM》则专门针对BIRT的图表功能,BIRT的图表模块强大且灵活,支持多种图表类型,如柱状图、折线图、饼图等。这个CHM文件可能详细解释了如何使用API创建、配置和定制图表,包括设置图表属性、数据...
**BIRT(Business Intelligence and Reporting Tools)API 详解** ...通过深入理解和熟练使用BIRT API,你可以创建出满足各种需求的高质量报表。同时,不断更新的文档和社区支持使得学习和解决问题更加容易。
总结来说,"Birt API Demo"是一个展示如何使用BIRT API在Java环境中动态生成Excel和报表的示例。通过这个Demo,开发者可以学习到如何初始化ReportEngine、打开报表设计、设置参数、运行报表以及导出报表等一系列操作...
在"dynamicxtab.rptdesign"这个文件中,很可能包含了用于演示或示例的BIRT报表设计,这个设计可能展示了如何使用BIRT API动态创建交叉表的代码和配置。通过打开并分析这个文件,我们可以更深入地理解上述知识点,并...
学习和掌握BIRT API的使用,不仅可以让你创建出功能丰富的报表,还能帮助你将报表系统无缝地集成到现有的应用程序中,提高工作效率,提升用户体验。深入理解和实践BIRT的API,对于任何希望在业务智能领域有所建树的...
6. **Chart API**:BIRT的图表组件提供了一套完整的API,用于创建各种类型的图表,并进行样式和行为的定制。 7. **Web Viewer API**:用于在Web应用程序中嵌入BIRT报表查看器。开发者可以利用此API控制报表的显示和...
在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一个开源的报表系统,它提供了一种强大的图表生成能力,使得开发者可以轻松地在Web应用中创建交互式和视觉吸引人的图表。"Birt chart 动态尺寸"这...
通过阅读提供的`birt_api.CHM`和`23214513216.chm`文档,你可以详细了解到BIRT API的每个类和方法,以及具体的使用示例。这些文档是学习BIRT开发的重要参考资料,建议结合实际编码实践,逐步掌握BIRT的强大功能。 ...
在BIRT API中,我们可以使用`IReportDesign`和`IDataSource`接口创建和操作数据集。通过`IQuery`接口,可以设置SQL查询,动态插入`columnNames`中的列。例如,使用Java代码可能如下: ```java IReportRunnable ...
主要根据BIRT API来动态生成报表的pdf,word等格式,导出到某一目录,希望对做birt报表的朋友有用。
在“birt_api帮助文档”中,你可以找到关于如何使用BIRT API进行开发的详细信息。这个CHM文件(Compiled Help Manual)通常包含了API的详细参考,包括类、接口、方法和属性的描述,以及使用示例。 1. **BIRT API...
"Eclipse BIRT Chart Engine Example Resource Code" 提供的是一个示例资源代码库,帮助开发者更好地理解和使用BIRT图表引擎。 **BIRT图表引擎核心概念:** 1. **图表引擎**:这是BIRT的核心组件之一,负责生成...
birt api 帮助文档。 对于使用birt开发报表的开发人员绝对有帮助。
6. **实例分析**:压缩包中的"birt报表实例2"可能包含了一个或多个具体的代码示例,演示了如何使用BIRT API创建和运行报表。这些实例可能会覆盖从数据源创建、报表设计、数据填充到最终的报表渲染全过程。 通过学习...
【Birt使用经验谈——Chart图】 Birt是一款开源的报表工具,用于生成复杂的报表和图表。这篇文档主要介绍如何在Birt中设计和创建Chart图表。以下是对Birt Chart图设计步骤的详细说明: 1. **环境配置**:虽然在...
1. **Report Designer API**:这是BIRT的图形化报告设计界面所使用的API,允许开发者创建、编辑和管理报表模板。它提供了诸如添加数据源、创建数据集、插入图表和表格等操作的接口。 2. **Engine API**:在运行时,...
birt chart api 特不喜欢在eclipse里的help里找,所以制作了这个chm格式电子书,和jdk一样,很方便使用。
birt api,特不喜欢在eclipse里的help里找,所以制作了这个chm格式电子书,和jdk一样,很方便使用。