flex组件设置焦点的方法:
setFocus()
当有焦点时画框的方法:
focusRect = true;
改变画框的方法:
重载drawFocus()方法?
以下转自http://uh.9ria.com/space.php?uid=27232&do=blog&id=3897
首先,UIComponent会自动为stage创建一个FocusManager,但是,问题是UIComponent并 没有使用try...catch...final,也就是说CS3版组件只运行在单一的swf中,如果你要载入一个使用了组件的swf,要确保已经允许载 入的swf访问stage,否则会产生错误,使所有组件都无法运行.
对于焦点管理的细节,我们无需了解,只要知道FocusManager根据组件实现的接口来决定焦点管理的方式.
IFocusManagerComponent:表明这是一个可以接受FocusManager焦点管理的类.
//指示是否可以从FocusManager获取焦点
function get focusEnabled():Boolean;
function set focusEnabled(value:Boolean):void;
//指示是否可以通过鼠标点击获取焦点
function get mouseFocusEnabled():Boolean;
//指示是否可以通过键盘获取焦点
function get tabEnabled():Boolean;
//通过键盘获取焦点的顺序
function get tabIndex():int;
//自己已经获取了焦点,在这个函数中显示焦点框
function setFocus():void;
//绘制焦点框,draw参数指明是否获取了焦点
function drawFocus(draw:Boolean):void;
注 意:事实上UIComponent已经实现了IFocusManagerComponent的全部方法,但并没有实现 IFocusManagerComponent接口,这意味着:如果你要进行焦点管理,要在子类上实现IFocusManagerComponent接口 (尽管不需要额外的方法),如果不实现该接口,则意味着不需要焦点管理.
FocusManager不对组件 tabEnabled、tabChildren 和 mouseFocusEnabled 属性的变化进行监视,所以改变这些属性后,需要将组件从新添加到显示列表(addChild),才能使FocusManager更新这些属性
IFocusManagerGroup:表明几个同样的类组成了一个整体,作为焦点的对象,就像几个RadioButton一样.
//作为一个整体(group)的名字
function get groupName():String;
function set groupName(value:String):void;
//指示自己是否被选择了
function get selected():Boolean;
function set selected(value:Boolean):void;
这个类是为类似RadioButton的组件专用的.
IFocusManager:这个接口是用来自定义一个FocusManager的,在这里不做过多介绍
只要继承里UIComponent,你几乎不必考虑焦点管理的问题,因为UIComponent会帮你处理焦点.如果你需要更高级的焦点管理,则可以监听FocusEvent.FOCUS_IN和FocusEvent.FOCUS_OUT事件.