smartrcp开源平台使用Java与Flex构建桌面程序 五(程序菜单与工具条)

本文介绍了一种基于Action机制的GUI应用程序设计方法,通过创建Action对象并利用这些对象来构建菜单栏和工具条,实现了统一的动作管理和界面元素的联动。

1:什么是Action
 
  在一标准程序中,菜单栏,工具条,右键菜单,都是必不可少的。一般来说
  工具栏提供的功能按钮都能在菜单栏中找到对应的菜单项与之对应。
  比如工具栏上有一退出按钮,在菜单栏上也有一退出菜单与之对应。他们的
  功能一样只是位置不同罢了。所以我们在这里抽象出一个表示退出动作的
  Action,该Action包含描述该Action的属性如:text表示该Action的名称;
  imageUrl表示该Action的现实图标。每个Action都有一字符串类型的
  actionId属性作为该Action的唯一标示以便区别于其他的Action对象。
  
2:怎样通过Action构造程序的全局菜单栏,工具条。

  在构造程序的全局菜单工具条时,首先将action对象添加到CActionManager
  全局Action管理器中,然后将该action的actionId属性值添加到菜单栏与工具栏
  对象中就可以了。首先我们定义两个Action对象,并将它们添加到CActionManager
  全局Action管理器中,代码如下:

 

//保存当前文件的Action对象
  var actionSave:CAction=
  new CAction("file_save","保存文件","/icons/save.gif","保存当前文件");
  //打开编辑器的Action对象
  var actionOpenEdit:CAction=
new CAction("file_open","打开编辑器","/icons/open.gif","打开编辑器");
  //将以上两个action添加到CActionManager中
  CActionManager.Instance.addAction(actionSave);
  CActionManager.Instance.addAction(actionOpenEdit);
  //添加对应Action的监听器,当Action动作触发时调用
  CActionManager.Instance.
  addListener(actionSave.actionId,function (evt:CActionEvent):void{
       Alert.show("文件保存Action被触发");                
  },this);
  CActionManager.Instance.
addListener(actionOpenEdit.actionId,function (evt:CActionEvent):void{
       Alert.show("编辑器打开Action被触发");                
  },this);
 


  2.1:构造全局菜单栏

//CMenuRelation代表菜单栏上的一个菜单
     //添加文件菜单
     var menuFile:CMenuRelation=new CMenuRelation("文件");
     //添加该菜单下的具体菜单项,具体为对应action对象的actionId属性值
     menuFile.actions=[actionSave.actionId];
     //添加编辑菜单
     var menuEdit:CMenuRelation=new CMenuRelation("编辑");
     menuEdit.actions=[actionOpenEdit.actionId];
     //构造菜单数组
     var menus:Array=[menuFile,menuEdit];
     //将菜单数组传递给CAppMenuBarManager,以构造菜单
     CAppMenuBarManager.Instance.initMenuBar(menus);   
 

   
  2.2:构造全局工具条

 

//获得全局工具栏管理器对象
     var toolBarManager:CAppToolBarManager=CAppToolBarManager.Instance;
     //添加对应的action
     toolBarManager.insertItem(actionSave.actionId);
     toolBarManager.insertItem(actionOpenEdit.actionId);
     
内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合Koopman算子理论递归神经网络(RNN)的数据驱动建模方法,旨在对非线性纳米定位系统进行有效线性化建模,并实现高精度的模型预测控制(MPC)。该方法利用Koopman算子将非线性系统映射到高维线性空间,通过递归神经网络学习系统的动态演化规律,构建可解释性强、计算效率高的线性化模型,进而提升预测控制在复杂不确定性环境下的鲁棒性跟踪精度。文中给出了完整的Matlab代码实现,涵盖数据预处理、网络训练、模型验证MPC控制器设计等环节,具有较强的基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)可复现性和工程应用价值。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及自动化、精密仪器、机器人等方向的工程技术人员。; 使用场景及目标:①解决高精度纳米定位系统中非线性动态响应带来的控制难题;②实现复杂机电系统的数据驱动建模预测控制一体化设计;③为非线性系统控制提供一种可替代传统机理建模的有效工具。; 阅读建议:建议结合提供的Matlab代码逐模块分析实现流程,重点关注Koopman观测矩阵构造、RNN网络结构设计MPC控制器耦合机制,同时可通过替换实际系统数据进行迁移验证,深化对数据驱动控制方法的理解应用能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值