Ce qui suit est ma solution :
1- Créer un TreeItemRenderer fait sur commande comme suit :
RadioButtonTreeItemRenderer.as
_________________________________________________
paquet
{
importation flash.events. Événement ;
importation mx.controls.RadioButton ;
importation mx.controls.RadioButtonGroup
;
importation mx.controls.treeClasses.* ;
la classe publique RadioButtonTreeItemRenderer
prolonge TreeItemRenderer
{
variété RadioBtn de public : RadioButton ;
variété RadioBtnGR de public : RadioButtonGroup
itemXml public de variété : XML ;
fonction publique RadioButtonTreeItemRenderer
()
{
superbe () ;
mouseEnabled = faux ;
}
données réglées de fonction publique de priorité (valeur : Objet) : vide {
si (valeur ! = nulle) {
super.data = valeur ;
this.itemXml = XML (valeur) ;
si (== de this.itemXml.@checked vrai) {
this.RadioBtn.selected = rectifient ;
} autrement {
this.RadioBtn.selected = faux ;
}
}
}
la fonction protégée par dépassement createChildren () : vide {
super.createChildren () ;
RadioBtn = nouveau RadioButton () ;
RadioBtnGR = nouveau RadioButtonGroup () ;
RadioBtn.group = RadioBtnGR ;
addChild (RadioBtn) ;
}
updateDisplayList de fonction protégé par dépassement (unscaledWidth
: Nombre
, unscaledHeight : Nombre) : vide
{
super.updateDisplayList (unscaledWidth
, unscaledHeight
) ;
si (super.data) {
tld de variété : TreeListData = TreeListData (super.listData
) ;
si (tld.hasChildren) {
this.RadioBtn.visible = faux ;
} autrement {
this.RadioBtn.visible = rectifient ;
}
si (RadioBtn.visible) {
this.RadioBtn.x = super.label.x
super.label.x = this.RadioBtn.x + 17 ;
this.RadioBtn.y = super.label.y+8 ;
}
}
}
}
}
________________________________________
2- le code d'application est :
backgroundColor= " #FFFFFF " de http://www.adobe.com/2006/mxml " >
importation mx.collections.ArrayCollection ;
importation mx.rpc.events.ResultEvent ;
importation mx.controls. Alerte ;
fonction privée TreeClickHandler (événement : Événement) : vide
{
selectedXmlList de variété : XMLList ;
itemObject de variété : Objet = event.currentTarget.selectedItem ;
si (! myTree.dataDescriptor.isBranch (itemObject)) {
selectedXmlList = myData.item.part. (== itemObject.@parentid de @parentid) ;
processSelection (selectedXmlList, itemObject.@id) ;
}
}
processSelection privé de fonction (liste : XMLList, Objid : Corde) : vide {
article de variété : XML ;
pour chacun (article dans la liste) {
si (item.@id ! =Objid)
{
item.@checked = faux ;
} autrement
{
item.@checked = rectifient ;
}
}
}
]] >
id= " myTree "
itemClick= " TreeClickHandler (événement) «
itemRenderer= " RadioButtonTreeItemRenderer "
showRoot= " faux "
width= " 100% "
height= " 100% "
labelField= " @label "
folderClosedIcon= " {nulle} «
folderOpenIcon= " {nulle} «
defaultLeafIcon= " {nulle} «
dataProvider= " {myData} «
openItems= " {myData. .item} « >