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

私は簡単にやり遂げましたが、なぜそれが機能したのかわかりません。ポップアップを開くと、最初に構成され、次にTextInputが構成され、その後ボタンにフォーカスされます。

于 2013-05-13T11:41:36.117 に答える
0

特定のボタンでイベントを手動でディスパッチすることをお勧めします。 http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf69084-7ce1.html

于 2013-05-10T19:16:33.687 に答える