smartrcp菜单栏的实现

本文介绍了一个基于MXML的模块,展示了如何实现应用程序菜单的创建、添加、删除及状态变更功能,包括菜单条设置、菜单项添加、移除等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?xml version="1.0" encoding="utf-8"?>
<gui:RCPModule xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:gui="cn.smartinvoke.gui.*"
 xmlns:rcp="cn.smartinvoke.rcp.*"
	layout="vertical" creationComplete="init()">
	<mx:Script>
		<![CDATA[
			import cn.smartinvoke.smartrcp.util.CWorkbenchActions; 
			import cn.smartinvoke.smartrcp.gui.control.CActionManager;
			import cn.smartinvoke.smartrcp.gui.control.CAppMenuBarManager;
			import cn.smartinvoke.smartrcp.gui.module.CActionEvent;
			import cn.smartinvoke.rcp.CAction;
			import org.eclipse.swt.CEventType;
			import org.eclipse.swt.widgets.Display;
			function init():void{
			   var actionManager:CActionManager=CActionManager.Instance;
			   for(var i:int=0;i<this.cActions1.length;i++){
			     actionManager.addAction(this.cActions1[i]);
			   }
			   
			   actionManager.addListener('a1',function (evt:CActionEvent):void{
			   	 this.infoLabel.text=evt.actionId+"   "+evt.path;
			   },this);
			   
			}
			//设置菜单条
			function onSetMenuBarClick():void{
				var menuFile:CMenuRelation=new CMenuRelation("文件");
				menuFile.actions=["a5","-","a1",CWorkbenchActions.ID_QUIT];
				var menuEdit:CMenuRelation=new CMenuRelation("编辑");
				menuEdit.actions=["a2"];
				var menuSearch:CMenuRelation=new CMenuRelation("查找");
				menuSearch.actions=["a3"];
				
			CAppMenuBarManager.Instance.initMenuBar([menuFile,menuEdit,menuSearch]);
				
			}
			function onAddMenuClick():void{
			   //添加菜单\
			   
			   CAppMenuBarManager.Instance.setMenu(menuRelation);
			}
			function onDelMenuClick():void{
			  //删除菜单
			  CAppMenuBarManager.Instance.removeMenu(menuRelation.label);
			}
			function onRemoveAll():void{
			  //清除所有菜单	
			  CAppMenuBarManager.Instance.removeAll();
			}
			
			function addMenuItem():void{
				var action:CAction=new 
                             CAction("file_save","保存文件","/icons/help.gif","保存当前文件");
				//action.actionId
				CActionManager.Instance.addAction(action);
				
				CAppMenuBarManager.Instance.addMenuItem(action.actionId,"文件");
			}
			function removeMenuItem():void{
				CAppMenuBarManager.Instance.removeMenuItem("file_save","文件");
			}
			 var isEnable:Boolean=false;
			function changeState():void{
				CActionManager.Instance.updateEnable("file_save",isEnable=!isEnable);
			}
		]]>
	</mx:Script>
	
	<rcp:CMenuRelation  id="menuRelation" label="添加的菜单">
   		 <rcp:actions>
   		 	<mx:String>a1</mx:String>
   		 	<mx:String>a2</mx:String>
   		 	<rcp:CMenuRelation label="子菜单">
   		 	  <rcp:actions>
   		 		<mx:String>a3</mx:String>
   		 		<mx:String>a4</mx:String>
   		 		<rcp:CMenuRelation label="子菜单1">
   		 		  <rcp:actions>
   		 			<mx:String>a5</mx:String>
   		 		  </rcp:actions>
   		 		</rcp:CMenuRelation>
   		 	  </rcp:actions>
   		 	</rcp:CMenuRelation>
   		 </rcp:actions>
   	</rcp:CMenuRelation>
	<mx:Array id="cActions1">
    	<rcp:CAction  actionId="a1" enable="false" type="{CAction.AS_RADIO_BUTTON}"
 text="测试2" toolTip="toolTipTest1..."/>
   		<rcp:CAction  actionId="a2" type="{CAction.AS_RADIO_BUTTON}" text="测试3"
 toolTip="toolTipTest2..."/>
   		<rcp:CAction  actionId="a3" type="{CAction.AS_RADIO_BUTTON}" text="测试4"
 toolTip="toolTipTest3..."/>
   		<rcp:CAction  actionId="a4" type="{CAction.AS_RADIO_BUTTON}" text="a4"
 toolTip="toolTipTest3..."/>
   		<rcp:CAction  actionId="a5" type="{CAction.AS_RADIO_BUTTON}" text="a5" 
toolTip="toolTipTest3..."/>
    </mx:Array>
    
    <mx:Panel title="本模块实现了应用程序菜单的修改功能,点击下面的菜单就会发现菜单的变化" 
cornerRadius="0"
            styleName="opaquePanel" width="100%" height="100%">
            <mx:Label id="infoLabel"/>
        <mx:ControlBar horizontalAlign="right">
           <mx:Button label="设置菜单条" click="onSetMenuBarClick()"/>
           <mx:Button label="添加Menu" click="onAddMenuClick()"/>
    	   <mx:Button label="删除Menu" click="onDelMenuClick()"/>
    	   
    	   <mx:Button label="添加文件保存菜单项" click="addMenuItem()"/>
    	   <mx:Button label="删除文件保存菜单项" click="removeMenuItem()"/>
    	   <mx:Button label="改变文件菜单状态" click="changeState()"/>
    	   
    	   <mx:Button label="清除所有菜单" click="onRemoveAll()"/>
    	</mx:ControlBar>
    </mx:Panel>
    
</gui:RCPModule> 
 
内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值