以编程方式设置 PopUpMenuButton 的值?
Setting the value of a PopUpMenuButton programmatically?
我需要在几个 mx PopUpMenuButton
组件中设置一些初始值。基于 this Adobe info 我将组件转换为 Menu
并设置 selectedIndex
– 但它不起作用。
有什么建议吗?该函数被调用,似乎 selectedIndex
已设置,但 PopUpMenuButton
仍显示其数据提供程序中的第一项。
private function initFontSizeData():void {
Menu(fontSizePopUp.popUp).selectedIndex = 3; // 48 pt
trace("index", Menu(fontSizePopUp.popUp).selectedIndex);
}
<mx:PopUpMenuButton id="fontSizePopUp"
name="fontSizePopUp"
width="50" height="20"
labelField="label"
paddingLeft="-8"
itemClick="toolChangeHandler(event)"
open="canvasEnabled(false)"
close="canvasEnabled(true)"
chromeColor="#cccccc"
toolTip="Font Size"
styleName="toolPopUpStyle"
creationComplete="initFontSizeData()"
popUpStyleName="toolPopUpStyle">
<mx:dataProvider>
<fx:Array>
<fx:Object fontPointSize = "18" label="18 pt"/>
<fx:Object fontPointSize = "24" label="24 pt" />
<fx:Object fontPointSize = "36" label="36 pt" />
<fx:Object fontPointSize = "48" label="48 pt" />
<fx:Object fontPointSize = "60" label="60 pt" />
<fx:Object fontPointSize = "72" label="72 pt"/>
<fx:Object fontPointSize = "96" label="96 pt" />
</fx:Array>
</mx:dataProvider>
</mx:PopUpMenuButton>
由于某些我忽略的原因(也许这只是一个错误),PopUpMenuButton
控件的标签未更新,这就是为什么您必须使用以下方法之一强制它执行此操作的原因:
- 使用
mx.core.mx_internal
提交选定的索引:
Menu(fontSizePopUp.popUp).selectedIndex = 3;
Menu(fontSizePopUp.popUp).mx_internal::commitSelectedIndex(3);
- 正在调度
mx.events.MenuEvent
事件:
var menu_event:MenuEvent = new MenuEvent(MenuEvent.ITEM_CLICK);
menu_event.index = 3;
Menu(fontSizePopUp.popUp).dispatchEvent(menu_event);
- 正在调度
mx.events.FlexEvent
事件:
Menu(fontSizePopUp.popUp).selectedIndex = 3;
Menu(fontSizePopUp.popUp).dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
希望能帮到你。
我需要在几个 mx PopUpMenuButton
组件中设置一些初始值。基于 this Adobe info 我将组件转换为 Menu
并设置 selectedIndex
– 但它不起作用。
有什么建议吗?该函数被调用,似乎 selectedIndex
已设置,但 PopUpMenuButton
仍显示其数据提供程序中的第一项。
private function initFontSizeData():void {
Menu(fontSizePopUp.popUp).selectedIndex = 3; // 48 pt
trace("index", Menu(fontSizePopUp.popUp).selectedIndex);
}
<mx:PopUpMenuButton id="fontSizePopUp"
name="fontSizePopUp"
width="50" height="20"
labelField="label"
paddingLeft="-8"
itemClick="toolChangeHandler(event)"
open="canvasEnabled(false)"
close="canvasEnabled(true)"
chromeColor="#cccccc"
toolTip="Font Size"
styleName="toolPopUpStyle"
creationComplete="initFontSizeData()"
popUpStyleName="toolPopUpStyle">
<mx:dataProvider>
<fx:Array>
<fx:Object fontPointSize = "18" label="18 pt"/>
<fx:Object fontPointSize = "24" label="24 pt" />
<fx:Object fontPointSize = "36" label="36 pt" />
<fx:Object fontPointSize = "48" label="48 pt" />
<fx:Object fontPointSize = "60" label="60 pt" />
<fx:Object fontPointSize = "72" label="72 pt"/>
<fx:Object fontPointSize = "96" label="96 pt" />
</fx:Array>
</mx:dataProvider>
</mx:PopUpMenuButton>
由于某些我忽略的原因(也许这只是一个错误),PopUpMenuButton
控件的标签未更新,这就是为什么您必须使用以下方法之一强制它执行此操作的原因:
- 使用
mx.core.mx_internal
提交选定的索引:
Menu(fontSizePopUp.popUp).selectedIndex = 3; Menu(fontSizePopUp.popUp).mx_internal::commitSelectedIndex(3);
- 正在调度
mx.events.MenuEvent
事件:
var menu_event:MenuEvent = new MenuEvent(MenuEvent.ITEM_CLICK); menu_event.index = 3; Menu(fontSizePopUp.popUp).dispatchEvent(menu_event);
- 正在调度
mx.events.FlexEvent
事件:
Menu(fontSizePopUp.popUp).selectedIndex = 3; Menu(fontSizePopUp.popUp).dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
希望能帮到你。