我无法将焦点设置在按钮上以打开弹出窗口。 按钮获得焦点,但它没有得到聚焦的外观。 就好像没有组件是聚焦。
我的源代码:
<?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>
感谢。
答案 0 :(得分:0)
最好手动调度特定按钮上的事件。 http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf69084-7ce1.html
答案 1 :(得分:0)
我通过了一个简单的,但不知道为什么它有效。当我打开弹出窗口时,我专注于配置第一个,然后是TextInput,然后是按钮。