1

私は他のいくつかの入力コントロールと一緒にボタン バー inf flex を持っています。各コントロールに tabIndex プロパティを設定しました。ButtonBar にタブで移動するまではすべてうまくいきます。

ButtonBar には 3 つのボタンがありますが、タブで移動すると、最初のボタンのみがフォーカスされ、もう一度タブで移動すると、フォーカスが一番上のコントロールに戻ります...

Flex Button バーのすべてのボタンをタブで移動するにはどうすればよいですか? これを行う方法はありますか、それとも個々のボタンを作成する必要がありますか?

これは私にはバグの可能性があるようです...

4

1 に答える 1

3

このコンポーネントは、フォーカスがバー内にあるときにユーザーが左/右矢印キーを押してボタンをトラバースする必要があるように作成されています。これはかなり標準的な GUI の動作です (ラジオ ボタン グループなどの他の場所でも見られます)。ButtonBarの SDK ソースを調べると、子ボタンの作成時に各子ボタンのタブ フォーカスが明示的に無効にされている場所がわかります。

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;
        }
    }
}
于 2008-09-12T16:48:39.007 に答える