0

我在将焦点设置在按钮上以打开弹出窗口时遇到问题。按钮获得焦点,但没有获得焦点的外观。好像没有任何组件是焦点。

我的源代码:

<?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>

谢谢。

4

2 回答 2

0

最好手动在特定按钮上调度事件。 http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf69084-7ce1.html

于 2013-05-10T19:16:33.687 回答
0

我通过了一个简单的,但不知道为什么它工作。当我打开弹出窗口时,我首先配置了 TextInput,然后是 Button。

于 2013-05-13T11:41:36.117 回答