Apache flex Flex NumericStepper在10以下的数字上具有前导0? 有没有办法让NumericStepper显示从0到10以下的数字

Apache flex Flex NumericStepper在10以下的数字上具有前导0? 有没有办法让NumericStepper显示从0到10以下的数字,apache-flex,numericstepper,Apache Flex,Numericstepper,(如01、02、03…09、10、11)如果您使用的是Spark NumericStepper,您应该为属性添加一个函数。如果有人正在寻找仅光环版本: package { import flash.events.Event; import mx.controls.NumericStepper; import mx.core.mx_internal; import mx.events.FlexEvent; use namespace mx_interna

(如01、02、03…09、10、11)

如果您使用的是Spark NumericStepper,您应该为属性添加一个函数。

如果有人正在寻找仅光环版本:

package
{
    import flash.events.Event;

    import mx.controls.NumericStepper;
    import mx.core.mx_internal;
    import mx.events.FlexEvent;

    use namespace mx_internal;
    /**
     * Added support to format time values.
     */ 
    public class TimePickerNumericStepper extends NumericStepper
    {
        public function TimePickerNumericStepper()
        {
        }

        /**
         *  @private
         */
        override protected function createChildren():void
        {
            super.createChildren();
            onValueCommit(null)
            inputField.addEventListener(FlexEvent.VALUE_COMMIT,onValueCommit);
        }

        protected function onValueCommit(event:Event):void
        {
            if(value<10 && inputField.text.length==1){
                inputField.text = "0" + inputField.text;
            }   
        }


    }
}
包
{
导入flash.events.Event;
导入mx.controls.NumericStepper;
导入mx.core.mx_internal;
导入mx.events.FlexEvent;
使用名称空间mx_internal;
/**
*增加了对时间值格式的支持。
*/ 
公共类TimePickerNumericStepper扩展NumericStepper
{
公共函数timepickernumericspepper()
{
}
/**
*@私人
*/
重写受保护的函数createChildren():void
{
super.createChildren();
onValueCommit(空)
inputField.addEventListener(FlexEvent.VALUE\u提交,onValueCommit);
}
受保护的函数onValueCommit(事件:事件):void
{

如果(值如果您在Flex 3中,您不能直接访问inputField,但可以使用mx\U internal轻松解决它

<mx:NumericStepper id="stpprHours" minimum="1" maximum="24" stepSize="1" creationComplete="formatStepper(stpprHours)" change="stpprHours_changeHandler(event)" value="1"/>

<mx:NumericStepper id="stpprMinutes" minimum="0" maximum="59" stepSize="1" creationComplete="formatStepper(stpprMinutes)" change="stpprMinutes_changeHandler(event)" value="0"/>



Yury-Euceda版本工作得很好。我想跟进以下内容,以将控件与事件处理程序解耦

private function init( event:FlexEvent ):void{
        scheduleHour.addEventListener(Event.CHANGE,onStepperChange);
        scheduleMinute.addEventListener(Event.CHANGE,onStepperChange);
        scheduleHour.dispatchEvent(new Event(Event.CHANGE));
        scheduleMinute.dispatchEvent(new Event(Event.CHANGE));
}


从没想过会有这样的待用房产。非常感谢。:)很好的一个:D我记得使用光环组件时,这真的是一个麻烦。如果你手动编辑数字步进器文本输入中的值,这并不总是有效。我如何解决这个问题?Thanks@MadBlack您是如何“手动”更新此值的?我查看代码已经有一段时间了,但我相当确定值w调用commitProperties/updateDisplayList函数后,您将使用format函数自动“更新”,这应该在设置新值时自动完成。可能是您正在做一些规避这一点的事情。我刚刚做了:我在一个小部件中放置了两个数字步长控件,其中一个具有format函数我声明添加一个前导零。我用format函数手动在数字步进控件中输入一个数字,然后打开另一个控件,然后再次返回。此时,在数字步进器中手动添加一个数字并没有触发format函数,数字很遗憾地保持为一个。我觉得格式功能仅与控件中的小箭头的交互有关。
private function init( event:FlexEvent ):void{
        scheduleHour.addEventListener(Event.CHANGE,onStepperChange);
        scheduleMinute.addEventListener(Event.CHANGE,onStepperChange);
        scheduleHour.dispatchEvent(new Event(Event.CHANGE));
        scheduleMinute.dispatchEvent(new Event(Event.CHANGE));
}
        public function onStepperChange (ev:Event) : void {
            var stepper:NumericStepper  = ev.currentTarget as NumericStepper;
            var num:String = stepper.value > 10 ? "" + stepper.value : "0" + stepper.value;
            stepper.mx_internal::inputField.text = num;
        }