我在努力實現一個圖表擴展到我正在開發的應用程序:所以我的問題是我寫了一些代碼(鍋爐板之一)爲了做到這一點在BIRT。無法將系列鏈接到圖表系列定義在BIRT
在代碼中的某些地方,我必須將數據集鏈接到一個系列和系列鏈接到其最終將被連接到圖表seriesDefinitions這樣
RadarSeries radarSeries = RadarSeriesImpl.create();
radarSeries.setDataSet(numberDataValues);
radarSeries.setSeriesIdentifier("Number data values");
radarSeries.getLabel().setVisible(true);
一個seriesdefinition對象,其中numberDataValues是雙打陣列。然後,我創建我的seriesDefinition:
SeriesDefinition seriesDefinition = SeriesDefinitionImpl.create();
seriesDefinition.getSeriesPalette().shift(0);
不過,這裏來的時候我不得不將我的radarSeries到seriesDefinition這樣的時候:
seriesDefinition.getSeriesDefinitions().add(radarSeries);
的問題:我沒有在嘗試從代碼調用代碼時(在Eclipse中執行Ctrl + Space)時,方法爲getSeriesDefinitions()。
不用說,我不能調用getSeriesDefinitions()方法myChart對象:
myChart.getSeriesDefinitions().add(seriesDefinition);
爲了您的信息:我已經手動包括我的BIRT罐子在我的本地Maven倉庫和這些相關的細節是:
<dependency>
<groupId>org.eclipse.birt</groupId>
<artifactId>engineapi</artifactId>
<version>${birtVersion}</version>
</dependency>
<dependency>
<groupId>org.eclipse.birt</groupId>
<artifactId>coreapi</artifactId>
<version>${birtVersion}</version>
</dependency>
<dependency>
<groupId>org.eclipse.birt</groupId>
<artifactId>scriptapi</artifactId>
<version>${birtVersion}</version>
</dependency>
<dependency>
<groupId>org.eclipse.birt</groupId>
<artifactId>chartengineapi</artifactId>
<version>${birtVersion}</version>
</dependency>
其中$ {birtVersion} = 2.6.2
這裏是關於RadarChart的birt 2.6.2發佈官方示例的鏈接:Radar chart official release example
有人能幫助我嗎?我真的不敢相信我沒有發現如何在3天的谷歌搜索會話中做到這一點:那並不嚴重! ...鑑於它的受歡迎程度和它的力量,我認爲他們應該在文檔中投入更多的精力......
@Birt guyz(如果有的話)很抱歉,如此戲劇性的人,但我真的認爲文檔側真的很爛......我希望能夠幫助您在這個(說真的,我這樣做)
下面是代碼:
public String drawChart() {
// Birt Vars
IDeviceRenderer iDeviceRenderer = null;
IDisplayServer iDisplayServer = null;
RunTimeContext context;
Chart chart = null;
// Birt Platform configuration
PlatformConfig platformConfig = new PlatformConfig();
platformConfig.setProperty("STANDALONE", true);
// Creating Chart Engine
ChartEngine chartEngine = ChartEngine.instance(platformConfig);
IGenerator iGenerator = chartEngine.getGenerator();
if(iGenerator == null)
System.out.println("IGenerator NULL");
else
System.out.println("IGenerator NOT NULL");
try {
// iDeviceRenderer = chartEngine.getRenderer("dv.PNG");
iDeviceRenderer = chartEngine.getRenderer("dv.GIF");
iDisplayServer = iDeviceRenderer.getDisplayServer();
} catch (Exception e) {
e.printStackTrace();
}
// Creating Chart
ChartWithoutAxes radarChart = ChartWithoutAxesImpl.create();
radarChart.setDimension(ChartDimension.TWO_DIMENSIONAL_LITERAL);
radarChart.setType(Radar.TYPE_LITERAL); //$NON-NLS-1$
radarChart.setSubType("Standard Radar Chart"); //$NON-NLS-1$
// Plot
radarChart.setSeriesThickness(10);
// Legend
Legend lg = radarChart.getLegend();
lg.getOutline().setVisible(true);
// Title
radarChart.getTitle()
.getLabel()
.getCaption()
.setValue("Radar Chart");//$NON-NLS-1$
try {
if(radarChart != null)
System.out.println("RADAR CHART NOT NULL");
else
System.out.println("RADAR CHART NULL!!!");
// PREPARE PHASE
context = Generator.instance().prepare(radarChart, null, null, ULocale.getDefault());
if(context == null)
System.out.println("CONTEXT NULL ");
else
System.out.println("CONTEXT NOT NULL");
//BIND PHASE : fetch data from DB
NumberDataSet numberDataValues = NumberDataSetImpl.create(new double[]{
54, 21, 75, 91, 37
});
// Radar series
RadarSeries radarSeries = RadarSeriesImpl.create();
radarSeries.setDataSet(numberDataValues);
radarSeries.setSeriesIdentifier("Number data values");
radarSeries.getLabel().setVisible(true);
SeriesDefinitionImpl seriesDefinition = (SeriesDefinitionImpl) SeriesDefinitionImpl.create();
seriesDefinition.getSeriesPalette().shift(0);
// ERROR HERE : can't call the method
seriesDefinition.getSeriesDefinitions()
// RENDERING PHASE
if(iDisplayServer == null)
System.out.println("DISPLAY SERVER NULL");
else
System.out.println("DISPLAY SERVER NOT NULL");
GeneratedChartState generatedChartState = iGenerator.build(iDisplayServer, radarChart, null, null, context);
iGenerator.render(iDeviceRenderer, generatedChartState);
} catch (Exception e) {
e.printStackTrace();
}
}
編輯+溶液
對不起,延遲:我應該早些時候發佈此答案,以標記此問題已解決。 只需使用RCP報告設計器來創建報告文檔。將ReportEngine/lib/* jar複製到您的/ WEB-INF/lib;還要在WEB-INF /下創建一個平臺/目錄,並在新創建的WEB-INF/platform /文件夾下複製BIRT ReportEngine配置/和插件/目錄。現在,使用您在BIRT RCP設計工具中創建的* .rptdesign文件,您將不得不使用BIRT API,它將允許您與報告進行交互...
根據示例您指的是,你的代碼缺少一些部分。你能否將問題轉化爲[SSCCE](http://sscce.org)? – Wivani
我給出了整個代碼... – kaffein
當您將鼠標懸停在seriesDefinition(或SeriesDefinition)上時,它顯示的是什麼類? – Wivani