1:背景:
Adobe AIR平台最大的劣势就是很难在该平台的基础上进行扩展,程序的功能受限于
该平台的标准API,而smartrcp使用eclipse插件体系很好的解决了平台的扩展问题。
从此可以使用Java解决复杂的业务逻辑,Flex负责界面展示,Java与Flex互相配合,
充分发挥各自的优势。
2:基本开发步骤如下:
2.1 保证您的eclipse 具有插件开发的功能,File -> New -> Other 看看有没
Plug-in Development 节点如果有则具有插件开发功能。转到smartrcp的解压目录,
将plugins目录下的cn.smartinvoke.smartrcp.core_1.0.0.jar文件拷贝到您eclipse
开发工具的根目录下的plugins目录下。
2.2 创建一名为org.smartrcp.test的plug-in Project,将Target Platform
选中为Equinox。一路next直到完成。打开项目下的MANIFEST.MF文件,打开Dependencies
选项,将cn.smartinvoke.smartrcp.core添加进Required Plug-ins集合,这样该插件才
可以引用到smartrcp的基础类。在org.smartrcp.test包下创建CFileWriter类,内容如下:
package org.smartrcp.test;
import java.io.*;
import cn.smartinvoke.IServerObject;
public class CFileWriter implements IServerObject {
public CFileWriter() {
}
/**
* 将字符串content保存到path文件中
* @param path
* @param content
* @throws IOException
*/
public void saveFile(String path,String content) throws IOException{
Writer writer=new FileWriter(path);
writer.write(content);
writer.flush();
writer.close();
}
public void dispose() {
}
}
2.3 右击org.smartrcp.test项目选择Export -> Plug-in Development ->
Deployable plug-ins and fragments 将该项目导出为一个eclipse 插件。
最后将导出的插件jar文件拷贝到smartrcp安装目录的ext目录中,如果没有该目录则手工
创建之。
2.4 到现在Java部分开发并配置好了,接下来就是Flex部分了,打开先前创建的smartrcpDemo
项目,修改Module_Content.mxml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<rcp:RCPModule xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:rcp="http://www.smartrcp.org"
layout="vertical" verticalAlign="middle" horizontalAlign="center"
creationComplete="init()"
>
<mx:Script>
<![CDATA[
import cn.smartinvoke.smartrcp.gui.module.CommonDialogs;
import mx.controls.Alert;
import cn.smartinvoke.smartrcp.gui.control.CActionManager;
import cn.smartinvoke.smartrcp.gui.module.CActionEvent;
import mx.collections.ArrayCollection;
import cn.smartinvoke.rcp.CToolBar;
import cn.smartinvoke.smartrcp.gui.FlashViewPart;
import cn.smartinvoke.RemoteObject;
import cn.smartinvoke.smartrcp.gui.ViewPartActionBar;
var actionBar:ViewPartActionBar=null;
//初始化方法,在该方法中为当前视图添加一刷新按钮
function init():void{
/**在容器上添加刷新按钮*/
var parent:RemoteObject=this.flashViewer.getParent();
//如果存载当前flash的容器时viewPart,才具有此功能
if(parent is FlashViewPart){
var viewPart:FlashViewPart=parent as FlashViewPart;
//获得当前视图容器的工具栏容器对象
this.actionBar=viewPart.getPartActionBar();
//注册freshAction到工具栏容器对象actionBar
this.actionBar.addAction(this.freshAction);
//定义工具栏对象
var toolBar:CToolBar=new CToolBar();
//将freshAction 添加到该工具栏对象
toolBar.actionIds=new ArrayCollection([this.freshAction.actionId]);
//将工具栏对象添加到工具栏容器
this.actionBar.fillToolBar(toolBar);
//给freshAction 添加事件监听器
this.actionBar.addListener(this.freshAction.actionId,function (ret:CActionEvent):void{
this.setInfo("刷新当前的所有操作..............");
},this);
}
/**添加对Splash.mxml启动文件中定义的id为test的全局action的事件监听*/
CActionManager.Instance.addListener("test",function (evt:CActionEvent):void{
Alert.show("id为test的全局action被用户点击触发了");
},this);
}
//公共方法,该方法可以被其他模块调用
public function setInfo(info:String):void{
this.labelInfo.text=info;
}
function onSaveClick():void{
/**打开文件保存对话框,并将TextArea中的内容保存到用户选择的路径下*/
var fileWriter:RemoteObject=new RemoteObject();
fileWriter.create("org.smartrcp.test.CFileWriter");
fileWriter.call("saveFile",["D:/testSave.text",this.saveText.text]);
}
]]>
</mx:Script>
<!--定义一action -->
<rcp:CAction id="freshAction" actionId="actionfresh"
imageUrl="icons/update.gif"
text="刷新" toolTip="刷新当前视图"/>
<mx:Label id="labelInfo" text="欢迎使用......"/>
<mx:TextArea id="saveText" width="292" height="144"/>
<mx:Button label="保存" click="onSaveClick()"/>
</rcp:RCPModule>
保存并编译之。
2.5 接下来就是运行啦^_^
打开控制台,切换到smartrcp安装目录,运行
smartrcp.exe -app E:\flexWork\SmartRCPDemo\bin-debug\Splash.swf 命令
-app 参数定义运行时加载的smartrcp程序的启动文件的路径,这里为smartrcpDemo
程序中的Splash.mxml文件编译后得到的Splash.swf文件路径。
当然为了偷懒你也可也在smartrcp安装目录下创建一run.bat批处理文件,将该命令
拷贝到其中,这样只需双击运行该批处理文件就可以了。
运行效果如下图:
在文本框中输入内容,点击保存后你就会发现D:/testSave.text文件中保存了该字符串,
证明我们调用Java是成功了的。
- 大小: 36.9 KB
分享到:
相关推荐
NULL 博文链接:https://smartinvoke.iteye.com/blog/664992
NULL 博文链接:https://smartinvoke.iteye.com/blog/676044
行业分析报告
Skeleton-Low Poly 低多边形骨架模型Unity插件美术资源包unitypackage 支持Unity版本2019.4.29或更高 直接的低多边形骨架。 特点: - 低多边形(9k tris,8.5) - 适用于 Unity 5 及更高 版本 - 完全装配 - 包括一个 fbx 格式的模型 - PBR 纹理 - 高清纹理
本项目是基于Java的Swing飞机订票系统设计源码,包含102个文件,其中主要包含41个java源代码文件,26个png图片文件,10个jpg图片文件等。系统采用了Java编程语言,实现了基于Swing的飞机订票系统。项目结构清晰,代码可读性强,易于理解和维护。
行业分析报告
引言 年度工作回顾 系统进展与亮点 技术创新与应用 市场反馈与用户评价 存在问题与挑战 未来展望与计划 结束语与感谢 一、引言 简要介绍智能家居系统的重要性和发展趋势 回顾本年度的工作目标和重点 二、年度工作回顾 系统建设与维护 完成的项目与里程碑 系统稳定性与可靠性提升 团队建设与培训 团队成员构成与职责 培训与技能提升活动 合作伙伴与资源整合 与供应商、合作伙伴的合作情况 资源整合与利用 三、系统进展与亮点 功能扩展与优化 新增功能介绍与效果评估 现有功能的优化与改进 用户体验提升 界面设计与交互优化 用户反馈与改进措施 四、技术创新与应用 物联网技术的应用 传感器与通信技术的升级 大数据分析与应用 智能家居的智能化管理 自动化控制与节能策略 安全防护与预警系统 五、市场反馈与用户评价 市场反馈分析 市场需求与竞争态势 市场占有率与增长趋势 用户评价总结 用户满意度调查结果
行业分析报告
2024-2030全球及中国PCB接触式探头行业研究及十五五规划分析报告
行业分析报告
行业分析报告
1094.基于51单片机的电动自行车调速系统的设计.doc
基于ssm+vue家政公司服务平台源码数据库文档.zip
hadoop大数据开发
单片机设计文档DOC智能循迹避障小车_论文设计提取方式是百度网盘分享地址
云南省移动应用大赛模板.zip
六数码问题解决方法 可类比到八数码 一个小小的六数码问题求
基于YOLOv的目标检测算法研究.docx目录
智慧医院的设计要遵从顶层设计的方法论,在整个顶层框架设计时遵从自上而下的原则,在实现步骤设计时采用自下而上的方式,按照顶层设计的原则、方法和关键点,结合传统的医院智能化系统的设计方法,形成一套完善的新型国际化智慧医院设计思路。本项目遵循“结构合理、系统稳定、适当冗余、适度超前”的设计理念,设计体现渐进性(留有扩展余地、可分步实施)。 智慧医院并不是智能化各个子系统的简单累加,是凭借丰富的医院行业知识和工程实践经验,为项目提供全生命周期的咨询顾问服务,包括顶层规划、系统设计、系统集成、技术咨询、造价咨询、项目施工、后期运维等内容的一体化咨询服务体系,智慧医院是有灵魂、有亮点、人性化、易运营、高性价比。
行业分析报告