2008-09-12 10 views
1

J'ai une barre de boutons inf flex avec plusieurs autres contrôles d'entrée, j'ai mis la propriété tabIndex pour chaque contrôle et tout se passe bien jusqu'à ce que je tabulation à la barre des boutons.Comment puis-je onglet sur un composant ButtonBar dans Flex?

ButtonBar dispose de 3 boutons mais Tabulation vers elle, seul le premier bouton obtient le focus, onglet à nouveau et l'accent retourne au contrôle dessus ...

Comment puis-je faire passer par tous tabulant boutons dans un Flex barre de bouton? Y at-il un moyen de le faire ou dois-je créer des boutons individuels pour cela?

Cela semble être un bug possible pour moi ...

Répondre

3

Le composant est écrit afin que l'utilisateur doit appuyer sur les touches fléchées gauche/droite lorsque le focus est dans le bar pour traverser les boutons - c'est assez comportement d'interface graphique standard (vous le voyez également dans d'autres endroits comme les groupes de boutons radio). Si vous regardez dans le SDK source for ButtonBar, vous pouvez voir où ils ont explicitement focus onglet désactivé pour chaque bouton enfant comme il est créé:

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; 
    ... 

Si vous voulez vraiment changer ce comportement, vous pouvez faire une sous-classe pour le faire , quelque chose comme ceci:

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; 
     } 
    } 
}