Flex中如何利用PopUpButton控件创建一个弹出TitleWindow的例子

接下来的例子演示了Flex中如何利用PopUpButton控件,创建一个弹出TitleWindow(点击按钮会弹出半透明选择窗口)。
让我们先来看一下Demo(可以右键View Source或 点击这里察看源代码 ):
Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white">
  6.     <mx:Style>
  7.         TitleWindow {
  8.             roundedBottomCorners: false;
  9.             borderColor: haloSilver;
  10.             backgroundColor: haloSilver;
  11.             borderAlpha: 0.8;
  12.             backgroundAlpha: 0.8;
  13.             dropShadowEnabled: false;
  14.         }
  15.     </mx:Style>
  16.     <mx:Script>
  17.         <![CDATA[
  18.             import mx.controls.CheckBox;
  19.             import mx.controls.dataGridClasses.DataGridColumn;
  20.             private function checkBox_change(evt:Event):void {
  21.                 var ch:CheckBox = evt.currentTarget as CheckBox;
  22.                 var idx:int = int(ch.data);
  23.                 var obj:Object = arrColl.getItemAt(idx);
  24.                 obj.sel = ch.selected;
  25.                 arrColl.disableAutoUpdate();
  26.                 arrColl.setItemAt(obj, idx);
  27.             }
  28.             private function selectAll(evt:Event):void {
  29.                 var idx:int;
  30.                 var item:Object;
  31.                 for (idx=0; idx<arrColl.length; idx++) {
  32.                     item = arrColl.getItemAt(idx);
  33.                     item.sel = CheckBox(evt.currentTarget).selected;
  34.                 }
  35.                 arrColl.refresh();
  36.             }
  37.             private function sel_labelFunc(item:Object, col:DataGridColumn):String {
  38.                 var bool:Boolean = item.hasOwnProperty("sel") &&
  39.                             (item.sel == "true" || item.sel == true);
  40.                 return bool.toString();
  41.             }
  42.         ]]>
  43.     </mx:Script>
  44.     <mx:ArrayCollection id="arrColl">
  45.         <mx:source>
  46.             <mx:Array id="arr">
  47.                 <mx:Object label="Button" />
  48.                 <mx:Object label="ButtonBar" />
  49.                 <mx:Object label="CheckBox" />
  50.                 <mx:Object label="ColorPicker" sel="true" />
  51.                 <mx:Object label="ComboBox" sel="true" />
  52.                 <mx:Object label="DataGrid" sel="true" />
  53.                 <mx:Object label="DateChooser" />
  54.                 <mx:Object label="DateField" sel="true" />
  55.                 <mx:Object label="HorizontalList" />
  56.                 <mx:Object label="HRule" />
  57.                 <mx:Object label="HSlider" />
  58.                 <mx:Object label="Image" />
  59.                 <mx:Object label="Label" />
  60.                 <mx:Object label="LinkBar" />
  61.                 <mx:Object label="LinkButton" />
  62.                 <mx:Object label="List" sel="true" />
  63.                 <mx:Object label="Menu" />
  64.                 <mx:Object label="MenuBar" />
  65.                 <mx:Object label="NumericStepper" sel="true" />
  66.                 <mx:Object label="ProgressBar" />
  67.                 <mx:Object label="RadioButton" />
  68.                 <mx:Object label="RadioButtonGroup" />
  69.                 <mx:Object label="RichTextEditor" sel="true" />
  70.                 <mx:Object label="Spacer" />
  71.                 <mx:Object label="SWFLoader" />
  72.                 <mx:Object label="TabBar" />
  73.                 <mx:Object label="Text" />
  74.                 <mx:Object label="TextArea" />
  75.                 <mx:Object label="TextInput" />
  76.                 <mx:Object label="TileList" />
  77.                 <mx:Object label="Tree" sel="true" />
  78.                 <mx:Object label="VideoDisplay" />
  79.                 <mx:Object label="VRule" />
  80.                 <mx:Object label="VScrollBar" />
  81.                 <mx:Object label="VSlider" />
  82.             </mx:Array>
  83.         </mx:source>
  84.     </mx:ArrayCollection>
  85.     <mx:ApplicationControlBar dock="true">
  86.         <mx:PopUpButton id="popUpButton"
  87.                 label="Please select some components"
  88.                 openAlways="true"
  89.                 close="arrColl.refresh();">
  90.             <mx:popUp>
  91.                 <mx:TitleWindow id="titleWin"
  92.                         height="200"
  93.                         showCloseButton="true"
  94.                         verticalScrollPolicy="on"
  95.                         horizontalScrollPolicy="off"
  96.                         close="popUpButton.close();">
  97.                     <mx:ToolBar width="320">
  98.                         <mx:Repeater id="myRep"
  99.                                 dataProvider="{arrColl}">
  100.                             <mx:CheckBox data="{myRep.currentIndex}"
  101.                                     label="{myRep.currentItem.label}"
  102.                                     selected="{myRep.currentItem.sel}"
  103.                                     change="checkBox_change(event);"
  104.                                     width="100" />
  105.                         </mx:Repeater>
  106.                     </mx:ToolBar>
  107.                     <mx:ControlBar>
  108.                         <mx:CheckBox label="Select All"
  109.                                 labelPlacement="left"
  110.                                 change="selectAll(event);" />
  111.                     </mx:ControlBar>
  112.                 </mx:TitleWindow>
  113.             </mx:popUp>
  114.         </mx:PopUpButton>
  115.     </mx:ApplicationControlBar>
  116.     <mx:DataGrid dataProvider="{arrColl}">
  117.         <mx:columns>
  118.             <mx:DataGridColumn dataField="label" />
  119.             <mx:DataGridColumn dataField="sel"
  120.                     labelFunction="sel_labelFunc" />
  121.         </mx:columns>
  122.     </mx:DataGrid>
  123. </mx:Application>
 

你可能感兴趣的:(职场,休闲)