2008-09-12 4 views
1

나는 다른 여러 입력 컨트롤과 함께 버튼 막대 inf 파일을 가지고 있는데, 각 컨트롤에 대해 tabIndex 속성을 설정하고 ButtonBar 탭으로 이동할 때까지 모두 잘됩니다. 내가 할 수있는 방법 ...Flex에서 ButtonBar 구성 요소를 탭으로 나누려면 어떻게합니까?

ButtonBar 컨트롤은 3 버튼이 있습니다 만에 탭 이동, 첫 번째 버튼을 다시 초점 탭을 얻고 초점은 다시 정상 제어에가는 모든 버튼을 통해 이동 탭 이동 플렉스 버튼 막대? 이 작업을 수행 할 수있는 방법이 있습니까? 아니면이 단추를 개별적으로 만들어야합니까?

이 나에게 가능한 버그처럼 보인다 ...

답변

3

구성 요소가 기록 된 포커스가 버튼을 통과 할 바 내에있을 때 사용자는 왼쪽/오른쪽 화살표 키를 눌러야합니다 - 그래서 이것이 상당히 표준 GUI 동작 (라디오 버튼 그룹과 같은 다른 장소에서도이 동작을 볼 수 있습니다). 당신이 정말로이 동작을 변경하려면

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

, 당신은 그것을 할 수있는 서브 클래스를 만들 수 있습니다 : 당신이 SDK source for ButtonBar로 보면 그들은 그것이 만들어지는 각 아동 버튼 명시 적으로 비활성화 탭 포커스를했습니다 곳, 당신은 볼 수 있습니다 , 다음과 같이 입력하십시오 :

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; 
     } 
    } 
} 
관련 문제