如何在Flex中的Button Bar组件中进行选项卡?

时间:2008-09-12 14:59:20

标签: flex actionscript-3

我有一个按钮栏inf flex以及其他几个输入控件,我为每个控件设置了tabIndex属性,一直顺利,直到我选中ButtonBar。

ButtonBar有3个按钮但是有标签,只有第一个按钮获得焦点,再次选项卡,焦点会回到顶部控制...

如何使标签遍历Flex按钮栏中的所有按钮?有没有办法做到这一点,还是我需要为此创建单独的按钮?

这对我来说似乎是一个可能的错误......

1 个答案:

答案 0 :(得分:3)

组件被写入,因此用户必须在焦点位于条形内时按左/右箭头键来遍历按钮 - 这是一个相当标准的GUI行为(您也可以在其他地方看到这一点,如单选按钮组) 。如果您查看SDK source for ButtonBar,您可以看到他们在创建每个子按钮时明确禁用了标签焦点的位置:

override protected function createNavItem(
                                        label:String,
                                        icon:Class = null):IFlexDisplayObject
    {
        var newButton:Button = Button(navItemFactory.newInstance());

        // Set tabEnabled to false so individual buttons don't get focus.
        newButton.focusEnabled = false;
    ...

如果你真的想改变这种行为,你可以创建一个子类来做这件事,如下所示:

package {
    import mx.controls.Button;
    import mx.controls.ButtonBar;
    import mx.core.IFlexDisplayObject;

    public class FocusableButtonBar extends ButtonBar {
        public function FocusableButtonBar()
        {
            super();
            this.focusEnabled = false;
        }

        override protected function createNavItem(
                    label:String, icon:Class=null):IFlexDisplayObject
        {
            var btn:Button = Button(super.createNavItem(label, icon));
            btn.focusEnabled = true;
            return btn;
        }
    }
}