For the Flex 4.6 button, you can define a label and icon:
<s:Button icon="{@Embed('assets/icon.png'}" label="Do the dance" />
Corresponding parts of the skin: iconDisplay:BitmapImageand labelDisplay:IDisplayTextthat are installed by the component ( adobe ref ). They are defined in ButtonBase.as
spark.components.supportClasses.ButtonBase
[SkinPart(required="false")]
public var iconDisplay:BitmapImage;
[SkinPart(required="false")]
public var labelDisplay:IDisplayText;
spark.components.Button extends ButtonBase and adds some new styles and the _emphasized property, but doesn't mention anything about iconDisplay. Thus, it seems to me that the only class used to draw the button is the skin class. If we move on to spark.skins.spark.ButtonSkin, which is the default shell used by Flex (or is it?), We will find:
<s:Label id="labelDisplay"
textAlign="center"
maxDisplayedLines="1"
horizontalCenter="0" verticalCenter="1" verticalAlign="middle"
left="10" right="10" top="2" bottom="2">
</s:Label>
, <s:BitmapImage id="iconDisplay">, , , ?