<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/06/26/detecting-when-the-label-placement-changes-on-a-button-control-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        initialize="init();">

    <mx:Script>
        <![CDATA[
            import mx.containers.ApplicationControlBar;
            import mx.containers.Form;
            import mx.containers.FormItem;
            import mx.controls.Alert;
            import mx.controls.Button;
            import mx.controls.ComboBox;
            import mx.events.ListEvent;

            [Bindable]
            [Embed("assets/flex_logo.jpg")]
            private var flex_icon:Class;

            private var btn:Button;
            private var comboBox:ComboBox;

            private function init():void {
                var arr:Array = [];
                arr.push({label:"left"});
                arr.push({label:"right"});
                arr.push({label:"top"});
                arr.push({label:"bottom"});

                comboBox = new ComboBox();
                comboBox.dataProvider = arr;
                comboBox.selectedIndex = 1;
                comboBox.addEventListener(ListEvent.CHANGE, comboBox_change);

                var formItem:FormItem = new FormItem();
                formItem.label = "labelPlacement:";
                formItem.addChild(comboBox);

                var form:Form = new Form();
                form.styleName = "plain";
                form.addChild(formItem);

                var appControlBar:ApplicationControlBar = new ApplicationControlBar();
                appControlBar.dock = true;
                appControlBar.addChild(form);
                Application.application.addChildAt(appControlBar, 0);

                btn = new Button();
                btn.label = "Button";
                btn.width = 200;
                btn.height = 100;
                btn.setStyle("icon", flex_icon);
                btn.addEventListener("labelPlacementChanged", btn_labelPlacementChanged);
                addChild(btn);
            }

            private function comboBox_change(evt:ListEvent):void {
                var obj:Object = ComboBox(evt.currentTarget).selectedItem;
                btn.labelPlacement = obj.label;
            }

            private function btn_labelPlacementChanged(evt:Event):void {
                Alert.show(evt.toString(), evt.type);
            }
        ]]>
    </mx:Script>

</mx:Application>