我在将焦点设置在按钮上以打开弹出窗口时遇到问题。按钮获得焦点,但没有获得焦点的外观。好像没有任何组件是焦点。
我的源代码:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import comps.MyPopUpWindow;
import mx.events.FlexEvent;
import mx.managers.PopUpManager;
// declare a variable for the reusable custom PopUp Window
private var popup:MyPopUpWindow;
private function openPopUpWindow(evt:FlexEvent=null):void {
// open the PopUp Window as a modal popup window
// and store it in a variable for later use
popup = PopUpManager.createPopUp(this,MyPopUpWindow,true) as MyPopUpWindow;
}
protected function button1_clickHandler(event:MouseEvent):void
{
openPopUpWindow();
}
]]>
</fx:Script>
<s:Button click="button1_clickHandler(event)" label="Open popup"/>
</s:Application>
弹出窗口:
<mx:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="400" height="300"
layout="vertical"
title="Title"
showCloseButton="true"
keyDown="titlewindow1_keyDownHandler(event)"
close="titlewindow1_closeHandler(event)"
creationComplete="titlewindow1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.core.IFlexDisplayObject;
import mx.events.CloseEvent;
import mx.events.FlexEvent;
import mx.managers.IFocusManagerComponent;
import mx.managers.PopUpManager;
protected function titlewindow1_creationCompleteHandler(event:FlexEvent):void
{
login.setFocus();
var componente:Button = focusManager.getFocus() as Button;
//Alert.show(componente.name ,'Save'); to ensure that the component holds the focu.
}
protected function titlewindow1_keyDownHandler(event:KeyboardEvent):void
{
if (event.charCode == Keyboard.ESCAPE) {
this.dispatchEvent(new CloseEvent(CloseEvent.CLOSE));
}
}
protected function titlewindow1_closeHandler(event:CloseEvent):void
{
PopUpManager.removePopUp(event.target as IFlexDisplayObject);
}
protected function save_keyDownHandler(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.ENTER)
Alert.show('Login','Login');
}
protected function login_clickHandler(event:MouseEvent):void
{
Alert.show('Login','Login');
}
]]>
</fx:Script>
<mx:Button id="login" label="Login" click="login_clickHandler(event)"/>
<mx:Button id="cancel" label="Cancel" />
</mx:TitleWindow>
谢谢。