Apache flex 是否有一个好的Flex(3)日期/时间选择器组件?

Apache flex 是否有一个好的Flex(3)日期/时间选择器组件?,apache-flex,flex3,components,Apache Flex,Flex3,Components,我需要一个flex应用程序的时间选择器,据我所知,没有UI组件可以以比每天更高的分辨率操作Date对象(DateChooser组件) Flex的最佳时间选择器是什么?我非常喜欢自由和/或啤酒中的免费组件。在Adobe网站上找到了这一点(谷歌搜索的第一个结果) 您可以扩展DateChooser组件以添加上述功能。这应该适合您: 上面有一个演示和一个指向源代码的链接。也许这会有帮助: 雅虎!Astra TimeInput和TimeStepper很有用 然而,显然在Flex4SDK中使用它们时有

我需要一个flex应用程序的时间选择器,据我所知,没有UI组件可以以比每天更高的分辨率操作
Date
对象(
DateChooser
组件)

Flex的最佳时间选择器是什么?我非常喜欢自由和/或啤酒中的免费组件。

在Adobe网站上找到了这一点(谷歌搜索的第一个结果)


您可以扩展DateChooser组件以添加上述功能。

这应该适合您:

上面有一个演示和一个指向源代码的链接。

也许这会有帮助:
雅虎!Astra TimeInput和TimeStepper很有用

然而,显然在Flex4SDK中使用它们时有一个问题,看起来是Yahoo!目前没有更新Astra组件的计划

您可能希望查看此链接,以获得可与Flex4一起使用的版本。


我认为时间输入对于原生Flex SDK组件来说是一个很好的选择。

如果您只想编辑时间,这里有一个解决方案:


尝试以下代码:这将有助于在没有AM/PM的情况下输入HH:MM 12hr格式

MXML代码:

<Timepicker maxChars="5" restrict="0-9" />

动作脚本代码:

package
{
import flash.events.KeyboardEvent;

import mx.controls.TextInput;

public class Timepicker extends TextInput
{
    public function Timepicker()
    {
    }

    override protected function keyUpHandler(event:KeyboardEvent):void
    {
        super.keyUpHandler(event);

        if (text.length == 0)
        {
            return;
        }
        var keyDel:Boolean=false;
        if (event.charCode == 8 || event.charCode == 46)
            keyDel=true;
        var numberString:String=text;
        if (keyDel)
            text=numberString;

        if (numberString.length > 0 && !keyDel)
        {
            if (numberString.length == 2 && numberString.indexOf(":") == -1)
            {
                text=numberString;
                textField.appendText(":");
            }
            else if (numberString.length >= 4 && Number(numberString.charAt(3)) > 5)
            {
                text=numberString.substr(0, 3)
            }
            else if (numberString.length == 3 && numberString.charAt(2) != ":")
            {
                if (Number(numberString.charAt(2)) <= 5)
                {
                    var fourthDigit:String=numberString.charAt(2);
                    super.textField.text="";
                    super.textField.appendText(numberString.substring(0, 2) + ":" + fourthDigit);
                }
                else
                {
                    super.textField.text="";
                    super.textField.appendText(numberString.substring(0, 2) + ":");
                }
            }
            textField.setSelection(textField.length, textField.length);

        }
    }

    override protected function keyDownHandler(event:KeyboardEvent):void
    {
        super.keyDownHandler(event);
        var keyDel:Boolean=false;
        if (event.charCode == 8 || event.charCode == 46)
            keyDel=true;

        super.text=text;
        if (super.text.length == 0)
        {
            var inputVal:String=String.fromCharCode(event.charCode);
            if (Number(inputVal) > 1)
            {
                super.textField.appendText("0" + inputVal + ":");
            }
        }
        super.textField.setSelection(super.textField.length, super.textField.length);
    }

}
包
{
导入flash.events.KeyboardEvent;
导入mx.controls.TextInput;
公共类时间选择器扩展了TextInput
{
公共函数时间选择器()
{
}
重写受保护的函数keyUpHandler(事件:KeyboardEvent):无效
{
super.keyUpHandler(事件);
如果(text.length==0)
{
返回;
}
var-keyDel:Boolean=false;
if(event.charCode==8 | | event.charCode==46)
keyDel=true;
变量numberString:String=文本;
if(keyDel)
文本=数字字符串;
if(numberString.length>0&!keyDel)
{
if(numberString.length==2&&numberString.indexOf(“:”)==1)
{
文本=数字字符串;
textField.appendText(“:”);
}
如果(numberString.length>=4&&Number(numberString.charAt(3))>5,则为else
{
text=numberString.substr(0,3)
}
else if(numberString.length==3&&numberString.charAt(2)!=“:”)
{
if(数字字符串字符(2))1
{
super.textField.appendText(“0”+inputVal+:”);
}
}
super.textField.setSelection(super.textField.length,super.textField.length);
}
}

}

我应该说清楚;我不是在寻找非免费组件。谢谢。这是我目前正在使用的组件,但我对它不太满意。但是,它确实有效。因此,如果没有更好的组件,我会很快将其标记为已接受组件。