swt与open flash chart

昨天看了IBM网站上写到rcp中运行open flash chart觉得不错自己就试着写了一下。

package com.chart.test; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.ole.win32.OLE; import org.eclipse.swt.ole.win32.OleAutomation; import org.eclipse.swt.ole.win32.OleControlSite; import org.eclipse.swt.ole.win32.OleFrame; import org.eclipse.swt.ole.win32.Variant; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class ChartTest { /** * Launch the application * @param args */ public static void main(String[] args) { String file="D://我的文档//学习资料//SWT//open-flash-chart-2-Lug-Wyrm-Charmer//open-flash-chart.swf"; final Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); shell.setSize(500, 375); shell.setText("SWT Application"); OleFrame oleFrame=new OleFrame(shell,SWT.NONE); oleFrame.setLayoutData(new GridData(GridData.FILL_BOTH)); OleControlSite controlSite = new OleControlSite(oleFrame, SWT.NONE, "ShockwaveFlash.ShockwaveFlash"); /** * doVerb() Requests that the OLE Document or ActiveX Control * perform an action; actions are almost always changes to the activation state. */ controlSite.doVerb(OLE.OLEIVERB_SHOW); // // final OleAutomation automation = new OleAutomation(controlSite); /** * getIDsOfNames()得到控件方法对应的 id 值 */ int[] methodIDs = automation.getIDsOfNames(new String[] { "LoadMovie" }); System.out.println(methodIDs.length); System.out.println("methodIDs[0]="+methodIDs[0]); Variant[] methodArgs = { new Variant(0), new Variant(file+"?data-file=/bar-3d.txt") }; System.out.println(methodArgs.length); automation.invoke(methodIDs[0], methodArgs); shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } }

你可能感兴趣的:(shell,String,File,Flash,application,SWT)