FLEX- MDI窗口开发实例

本文介绍了一个使用 Flex 实现的多文档界面 (MDI) 应用示例,该应用支持创建、关闭、最大化等窗口操作,并且演示了如何创建模态窗口。

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

代码:
application.mxml

<? xml version="1.0" encoding="utf-8" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  layout ="vertical"
     xmlns:mdi
="ext.containers.windows.mdi.*"  width ="100%"  height ="100%"
creationComplete
="initCollections();" >
    
< mx:Script >
        
<![CDATA[
            import mx.events.MenuEvent;
            import mx.collections.XMLListCollection;
            import mx.controls.Alert;
            import mx.managers.PopUpManager;
            import mx.managers.SystemManager;
            import mx.containers.Panel;
            import ext.containers.windows.mdi.ChildWindow;
            import mx.events.FlexEvent;
            private var menuBarXML:XMLList =
            <>
                <menuitem label = "windows">
                    <menuitem label ="create window" data="createWindow"/>
                    <menuitem label ="close window" data="closeWindow"/>
                    <menuitem label ="max window" data ="maxWindow"/>
                    <menuitem label ="min window" data = "minWindow"/>
                    <menuitem label ="min all windows" data ="minAllWindows"/> 
                    <menuitem label ="Tile window" data ="tileWindow"/>
                    <menuitem label ="Cascade window" data ="cascadeWindow"/>
                </menuitem>
                <menuitem label ="modal window">
                    <menuitem label ="create modal window" data ="showModal"/>
                </menuitem>
            </>;        
            [Bindable]
            private var menuBarCollection:XMLListCollection;
            
            private function initCollections():void
            {
                menuBarCollection = new XMLListCollection(menuBarXML);
            }
            private function menuHandler(e:MenuEvent):void{
                //Alert.show(e.item.@data);
                switch(String(e.item.@data)){
                    case "createWindow":
                        new MDITest1().addToMainArea();
                        break;
                    case "showModal":
                        (new ModalWindow()).showModal();
                        break;
                    case "closeWindow":
                        ma.windowClose();
                        break;
                    case "maxWindow":
                        ma.maxActiveWindow();
                        break;
                    case "minWindow":
                        ma.minActiveWindow();
                        break;
                    case "minAllWindows":
                        ma.windowMinimizeAll();
                        break;
                    case "tileWindow":
                        ma.windowTileHorizontal();
                        break;
                    case "cascadeWindow":
                        ma.windowCascade();
                        break;
                }
            }
        
]]>
    
</ mx:Script >
    
< mx:MenuBar  x ="0"  y ="0"  labelField ="@label"  itemClick ="menuHandler(event);"
dataProvider
="{menuBarCollection}"  width ="100%"   />
    
< mdi:MainArea  id ="ma"  width ="100%"  height ="100%" />
</ mx:Application >


MDITest1.mxml

1  <? xml version="1.0" encoding="utf-8" ?>
2  < ChildWindow  xmlns ="ext.containers.windows.mdi.*"  xmlns:mx ="http://www.adobe.com/2006/mxml"
width
="400"  height ="300"  xmlns:flexlib ="flexlib.containers.*"  title ="child window" >
3       < flexlib:Docker >
4           < flexlib:DockableToolBar  width ="215" >
5           < mx:Button  width ="30"  label ="B"  fontWeight ="bold"  fontFamily ="Arial" />
6           < mx:Button  width ="32"  label ="I"  fontStyle ="italic" />
7           </ flexlib:DockableToolBar >
8       </ flexlib:Docker >
9  </ ChildWindow >



ModalWindow.mxml

 1  <? xml version="1.0" encoding="utf-8" ?>
 2  < Window  xmlns ="ext.containers.windows.*"  
 3      xmlns:mx ="http://www.adobe.com/2006/mxml"  width ="412"  height ="322"  
 4      layout ="absolute"  xmlns:flexlib ="flexlib.containers.*"  
 5      title ="This is a modal window"   >
 6       < mx:Script >
 7           <![CDATA[
 8              import mx.controls.Alert;
 9           ]]>
10       </ mx:Script >
11       < mx:Button  label ="close"  x ="331"  y ="246"  click ="modalResult = Alert.CANCEL;" />
12       < flexlib:SuperTabNavigator  x ="10"  y ="10"  width ="376"  height ="221"  tabEnabled ="true" >
13           < mx:Canvas  label ="one"  width ="100%"  height ="100%" >
14               < mx:DataGrid  x ="5"  y ="0"  width ="100%"  height ="100%" >
15                   < mx:columns >
16                       < mx:DataGridColumn  headerText ="Column 1"  dataField ="col1" />
17                       < mx:DataGridColumn  headerText ="Column 2"  dataField ="col2" />
18                       < mx:DataGridColumn  headerText ="Column 3"  dataField ="col3" />
19                   </ mx:columns >
20               </ mx:DataGrid >
21           </ mx:Canvas >
22           < mx:Canvas  label ="two"  width ="100%"  height ="100%" >
23           </ mx:Canvas >
24           < mx:Canvas  label ="three"  width ="100%"  height ="100%" >
25           </ mx:Canvas >
26           < mx:Canvas  label ="four"  width ="100%"  height ="100%" >
27           </ mx:Canvas >
28       </ flexlib:SuperTabNavigator >
29       < mx:Button  label ="ok"  x ="288"  y ="246"  click ="modalResult = Alert.OK" />
30  </ Window >
31  

ModalWindow.mxml中第11行中 click事件中只要对modalResult写值就自动关闭窗口,模仿delphi中的模态窗口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值