【Stimulsoft Reports Java教程】報表渲染過程的事件
阿新 • • 發佈:2018-11-20
此示例專案顯示如何為報表呈現事件新增和使用處理程式。
首先,建立JFrame並設定必要的選項。
public static void main(final String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { try { JFrame frame = new JFrame(); frame.add(new RenderProcess(frame)); frame.setSize(FRAME_SIZE); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } catch (Throwable e) { StiExceptionProvider.show(e, null); } } }); }
例如,我們使用SimpleList報表。載入此報表模板並將Demo資料庫新增到報表物件。
final StiReport report = StiSerializeManager.deserializeReport(new File("Reports", "SimpleList.mrt")); StiXmlDatabase xmlDatabase = new StiXmlDatabase("Demo", "Data/" + "Demo.xsd", "Data/" + "Demo.xml"); report.getDictionary().getDatabases().add(xmlDatabase);
為了演示報表呈現時事件的呼叫順序,我們將新增幾個處理程式。每個處理程式將在應用程式表單的文字區域中新增文字。
report.handlerBeginRender.add(new StiEventHandlerListener() { public void invoke(StiEventObject myEvent) { appendText(beginRender); } }); report.handlerRendering.add(new StiEventHandlerListener() { public void invoke(StiEventObject myEvent) { appendText(subProcessField1); } }); report.handlerRendering.add(new StiEventHandlerListener() { public void invoke(StiEventObject myEvent) { appendText(subProcessField2); } }); report.getPages().get(0).handlerBeginRender.add(new StiEventHandlerListener() { public void invoke(StiEventObject myEvent) { appendText(subProcessField3); } }); report.getPages().get(0).handlerEndRender.add(new StiEventHandlerListener() { public void invoke(StiEventObject myEvent) { appendText(subProcessField4); } }); report.handlerEndRender.add(new StiEventHandlerListener() { public void invoke(StiEventObject myEvent) { appendText(finishField); } });
示例程式碼的結果如下圖所示: