在构建用户界面时,经常用到日期的输入和选择。

        输入日期时,用户可以使用键盘输入,也可以在类似于日历的弹出式对话框中,通过鼠标单击所选日期。

        在Flex中可以通过日期输入控件实现输入和选择日期。Flex内置了两种日期输入控件:日期选择器控件(DateChooser Control)和日期区域控件(DateField Control).

     一、日期选择器控件(DateChooser Control)

       

 

      日期选择器控件类似于日历。利用年、月、日和星期来表示一个日期。该控件,即可以选择日期,也可以根据需求限制日期的选择范围,或者禁止选择某一特殊日期。选择日期后,还可以单击已选择日期取消选定。

     对应的MXML标签为<mx:DateChooser>.

   1  常用属性:           

 

注意:日期选择器控件中的月份是从0开始计算的,所以2006.0.23表示2006年1月23日。

 

2.事件

用户与空间交互时,可触发两种事件

change:改变选择日期时会触发change事件。事件对象:mx.event.Calendar LayoutChangeEvent.

scroll:在控件上改变月份时会触发scroll事件。事件对象:mx.event.DateChooserEvent .

 

3.创建日期选择器控件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
 3                        xmlns:s="library://ns.adobe.com/flex/spark" 
 4                        xmlns:mx="library://ns.adobe.com/flex/mx">
 5     <fx:Declarations>
 6         <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 7     </fx:Declarations>
 8     <fx:Script>
 9         <![CDATA[
10             import mx.controls.Alert;
11             import mx.events.CalendarLayoutChangeEvent;
12             import mx.events.DateChooserEvent;
13             //定义改变选择日期时发生的事件,在文本控件中显示当前选择的日期
14             public function changeDate(event:CalendarLayoutChangeEvent):void{
15             var showDate:String = event.currentTarget.selectedDate.getFullYear() + "年"
16                 + event.currentTarget.selectedDate.getMonth() + "月" +
17                 event.currentTarget.selectedDate.getDay()+"日";
18                 
19                 showDateText.text = showDate;
20             
21             }
22             
23             //定义改变当前显示月份时发生的事件
24             private function changeMonth(event:DateChooserEvent):void{
25               mx.controls.Alert.show(event.detail);
26             }
27         ]]>
28     </fx:Script>
29     <mx:Panel title="日期选择器控件" width="239" height="273" layout="vertical" horizontalAlign="center">
30         <!-- 控件定义,选择日期从2006年1月1日到2007年9月15日,月份从0开始计数-->
31         <mx:DateChooser id="date1"
32             selectableRange="{{rangeStart:new Date(2006,0,1),rangeEnd:new Date(2007,9,15)}}"
33             scroll="changeMonth(event)"
34             change = "changeDate(event)">
35         </mx:DateChooser>
36         <mx:Text id="showDateText" width="174" height="24"/>
37     </mx:Panel>
38     
39     
40     
41 </s:WindowedApplication>