Flex中的弹出窗口(mx.managers.PopUpManager)

flex PopUpManager类
  PopUpManager 类 PopUpManager 类ActionScript类名称mx.managers.PopUpManager
  PopUpManager 类的方法摘要
  PopUpManager.createPopUp() 创建弹出窗口。
  PopUpManager.deletePopUp() 删除由调用PopUpManager.createPopUp()而创建的弹出窗口。
  PopUpManager.createPopUp(parent, class, modal [, initobj,outsideEvents])
  参数:parent 对弹出窗口所基于的窗口的引用。
  class 对要创建的对象的类的引用。
  modal 一个布尔值,它指示该窗口是(true) 否(false) 是模式
  initobj 一个包含初始化属性的对象。此参数是可选的。

  outsideEvents 一个布尔值,指示在用户单击窗口以外的区域时是(true) 否(false)触发事件。此参数是可选的。

 

1.PopUpManager--createPopUp与addPopUp区别

 createPopUp:是上来先设置好弹出方式,然后在new出来一个TitleWindow的对象,然后通过此对象设置他的变现形式。

addPopUp:是先new出来对象,设置好表现形式,然后在选择弹出来的方式。

一定要注意new对象与弹出方式的先后顺序。

addPopUp代码

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               creationComplete="init()"
              backgroundColor="white"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
    </fx:Declarations>
    <fx:Script>   
        <![CDATA[   
        import mx.controls.Label;   
        import mx.events.CloseEvent;   
        import mx.containers.TitleWindow;   
        import mx.managers.PopUpManager;   
        
        private var titleWindow:TitleWindow;   
        
        private function init():void {   
        var label:Label = new Label();   
        label.text = "Hello world";   
        
        titleWindow = new TitleWindow();   
        titleWindow.title = "Custom title";   
        titleWindow.showCloseButton = true;   
        titleWindow.width = 240;   
        titleWindow.height = 180;   
        titleWindow.addEventListener(CloseEvent.CLOSE, titleWindow_close);   
        titleWindow.addChild(label);   
        
        PopUpManager.addPopUp(titleWindow, this, true);   
        PopUpManager.centerPopUp(titleWindow);   
        }   
        
        private function titleWindow_close(evt:CloseEvent):void {   
        PopUpManager.removePopUp(titleWindow);   
        }   
        ]]>   
    </fx:Script>   
    
    <mx:Button label="Launch TitleWindow" click="init()" />   
</s:Application>


  1. createPopUp代码
 <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               creationComplete="init()"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
    </fx:Declarations>
    <fx:Script>   
        <![CDATA[   
        import mx.managers.PopUpManagerChildList;   
        import mx.controls.Label;   
        import mx.events.CloseEvent;   
        import mx.containers.TitleWindow;   
        import mx.managers.PopUpManager;   
        
        private var titleWindow:TitleWindow;   
        
        private function init():void {   
        var label:Label = new Label();   
        label.text = "Hello world";   
        titleWindow = new TitleWindow();   
        titleWindow = TitleWindow(PopUpManager.createPopUp(this,TitleWindow,true));   
        titleWindow.title = "Custom title";   
        titleWindow.showCloseButton = true;   
        titleWindow.width = 240;   
        titleWindow.height = 180;   
        titleWindow.addChild(label);   
        titleWindow.addEventListener(CloseEvent.CLOSE, titleWindow_close);   
        PopUpManager.centerPopUp(titleWindow);   
        }   
        
        private function titleWindow_close(evt:CloseEvent):void {   
        PopUpManager.removePopUp(titleWindow);   
        }   
        ]]>   
    </fx:Script>   
    
    <mx:Button label="Launch TitleWindow" click="init()" />   
</s:Application>

2.弹出窗口为DataGrid添加新数据

 

(1)Note.as

package  
{  
  public classNote  
  {  
    public varauthor:String;  
    public vartopic:String;  
    public vardescription:String;  
  }  


(2)AddNote.mxml

<?xml version="1.0"encoding="utf-8"?> 
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" 
 layout="absolute" width="348"height="218" 
 title="Add ANote"> 
 <mx:Metadata> 
   [Event(name="SaveNote")]  
 </mx:Metadata> 
 <mx:Script> 
  <![CDATA[ 
    importmx.managers.PopUpManager;        
    //PopUpManager.createPopUp() 创建弹出窗口
    private function close():void 
    { 
      PopUpManager.removePopUp(this); 
    } 
      
    private function save():void 
    { 
      this.dispatchEvent(new Event("SaveNote")); 
    } 
  ]]> 
 </mx:Script> 
  <mx:Label text="Author" x="35"y="10"/> 
  <mx:TextInput id="author"width="150" x="84" y="8"/> 
  <mx:Labeltext="Topic"  y="36"x="42"/> 
  <mx:TextInput id="topic"width="150" x="84" y="34"/> 
  <mx:Labeltext="Description"  y="62"x="10"/> 
  <mx:TextArea id="description"width="234" height="77" x="84"y="61"/> 
  <mx:Button label="Cancel"click="close()" x="193"y="146"/> 
  <mx:Button label="Save"click="save()" x="264"y="146"/> 
</mx:TitleWindow >

 

(3)Test.mxml

<?xml version="1.0"encoding="utf-8"?>
<mx:Application
 xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="absolute"
 width="500" height="300"
 creationComplete="init()">
  <mx:Script>
   <![CDATA[
    import mx.managers.PopUpManager;
    import mx.collections.ArrayCollection;
    
    [Bindable]
    private var notes:ArrayCollection = new ArrayCollection();
    
    private var addNoteScreen:AddNote;
    
    private function init():void
    {
      addNoteScreen = new AddNote();
      addNoteScreen.addEventListener("SaveNote", saveNote);
    }
    
    private function addNote():void
    {
      PopUpManager.addPopUp(addNoteScreen, this, true);
      PopUpManager.centerPopUp(addNoteScreen);
      addNoteScreen.author.text = "";
      addNoteScreen.topic.text = "";
      addNoteScreen.description.text = "";
    }
    
    private function saveNote(e:Event):void
    {
      var note:Note = new Note();
      note.author = addNoteScreen.author.text;
      note.topic = addNoteScreen.topic.text;
      note.description = addNoteScreen.description.text;
      notes.addItem(note);
      PopUpManager.removePopUp(addNoteScreen);
    }
   ]]>
 </mx:Script>
  <mx:Panel title="Notes"
   width="100%"height="100%"
   layout="vertical"horizontalAlign="right"
   paddingTop="3" paddingLeft="3"paddingRight="3" paddingBottom="3">
   <mx:DataGrid dataProvider="{notes}" width="100%"height="100%">
     <mx:columns>
       <mx:DataGridColumn headerText="Author"dataField="author" width="80"/>
       <mx:DataGridColumn headerText="Topic"dataField="topic" width="100"/>
       <mx:DataGridColumn headerText="Description"dataField="description"/>
     </mx:columns>
   </mx:DataGrid>
   <mx:Button label="Add Note"click="addNote()"/>
  </mx:Panel>
</mx:Application>

转载自http://blog.sina.com.cn/s/blog_5c4558600100d3im.html

你可能感兴趣的:(datagrid,function,Flex,application,import,encoding)