大家都知道用java写CS程序非常麻烦,开发效率远不如winform,但是
用flex来做UI不仅好看而且开发效率很高,所以幻想着能用flex来做
java桌面程序。
经过大半年的摸索和测试,终于写出了SmartInvoke,它可以方便的实现
java与flex的互相调用,就像调用本地代码一样方便快捷。
SmartInvoke (for java and flex)版构造于swt库之上。 下面是一些简单的代码片段:
java调用flex:
//添加flash容器到shell窗体
final FlashContainer container=new FlashContainer(shell);
//flash容器加载完毕会自动调用ILoadCompleteListener接口的run方法
container.completeListener=new ILoadCompleteListener(){ public void run() {
//传入一flash容器创建remoteObject代理对象
RemoteObject remoteObject=new RemoteObject(container);
//调用flex中demo.Test类的默认构造函数创建一对象,
//并将该对象与本地remoteObject对象关联
remoteObject.createRemoteObject("demo.Test", null);
//调用关联类demo.Test的hello方法,并传入参数
Object obj=remoteObject.call("hello", new Object[]{"Java"});
//将flex返回的字符串转换为对应String类型,并打印出来
System.out.println((String)obj);
}
};
//加载具体的swf文件
container.loadMovie(0, "E:/SmartInvokeTest.swf");
flex调用java:
//创建一代理对象
var remoteObject:RemoteObject=new RemoteObject();
//调用java中demo.JavaServer类的默认构造函数创建一对象,
//并将该对象与本地remoteObject对象关联
remoteObject.create("demo.JavaServer",null);
//调用demo.JavaServer类的hello方法,并传入字符串 flex
var ret:Object=remoteObject.call("hello",["flex"]);
//将java返回的字符串转换为对应String类型
Alert.show("java返回"+ret as String);
//回收关联类的内存
remoteObject.dispose(); 是不是很简单呀!而且以上的中间代码都可以用CodeTransform代码转换工具自动生成代理类,
代理类与服务类名称相同,方法也互相对应,在调用本地代理类方法的时候,此代理类方法
就会调用对应服务类的对应方法,并返回该服务类方法的返回值,这样就大大简化了java与flex
之间的互调,真正的实现了调用的本地化。
项目地址:http://smartinvoke.cn/
请大家支持下
用flex来做UI不仅好看而且开发效率很高,所以幻想着能用flex来做
java桌面程序。
经过大半年的摸索和测试,终于写出了SmartInvoke,它可以方便的实现
java与flex的互相调用,就像调用本地代码一样方便快捷。
SmartInvoke (for java and flex)版构造于swt库之上。 下面是一些简单的代码片段:
java调用flex:
//添加flash容器到shell窗体
final FlashContainer container=new FlashContainer(shell);
//flash容器加载完毕会自动调用ILoadCompleteListener接口的run方法
container.completeListener=new ILoadCompleteListener(){ public void run() {
//传入一flash容器创建remoteObject代理对象
RemoteObject remoteObject=new RemoteObject(container);
//调用flex中demo.Test类的默认构造函数创建一对象,
//并将该对象与本地remoteObject对象关联
remoteObject.createRemoteObject("demo.Test", null);
//调用关联类demo.Test的hello方法,并传入参数
Object obj=remoteObject.call("hello", new Object[]{"Java"});
//将flex返回的字符串转换为对应String类型,并打印出来
System.out.println((String)obj);
}
};
//加载具体的swf文件
container.loadMovie(0, "E:/SmartInvokeTest.swf");
flex调用java:
//创建一代理对象
var remoteObject:RemoteObject=new RemoteObject();
//调用java中demo.JavaServer类的默认构造函数创建一对象,
//并将该对象与本地remoteObject对象关联
remoteObject.create("demo.JavaServer",null);
//调用demo.JavaServer类的hello方法,并传入字符串 flex
var ret:Object=remoteObject.call("hello",["flex"]);
//将java返回的字符串转换为对应String类型
Alert.show("java返回"+ret as String);
//回收关联类的内存
remoteObject.dispose(); 是不是很简单呀!而且以上的中间代码都可以用CodeTransform代码转换工具自动生成代理类,
代理类与服务类名称相同,方法也互相对应,在调用本地代理类方法的时候,此代理类方法
就会调用对应服务类的对应方法,并返回该服务类方法的返回值,这样就大大简化了java与flex
之间的互调,真正的实现了调用的本地化。
项目地址:http://smartinvoke.cn/
请大家支持下
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货