编写组件是为了让用户在焦点位于条内时按左/右箭头键来遍历按钮——这是一个相当标准的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;
}
}
}