Lo que sigue es mi solución:
1- Crear un TreeItemRenderer de encargo como sigue:
RadioButtonTreeItemRenderer.as
_________________________________________________
paquete
{
importación flash.events. Acontecimiento;
importación mx.controls.RadioButton;
importación mx.controls.RadioButtonGroup
;
importación mx.controls.treeClasses.*;
la clase pública RadioButtonTreeItemRenderer
amplía TreeItemRenderer
{
público var RadioBtn: RadioButton;
público var RadioBtnGR: RadioButtonGroup
itemXml público del var: XML;
función pública RadioButtonTreeItemRenderer
()
{
estupendo ();
mouseEnabled = falso;
}
datos determinados de la función pública de la invalidación (valor: Objeto): vacío {
¡si (valor! = falta de información) {
super.data = valor;
this.itemXml = XML (valor);
si (== de this.itemXml.@checked verdad) {
this.RadioBtn.selected = verdad;
} {
this.RadioBtn.selected = falso;
}
}
}
la función protegida invalidación createChildren (): vacío {
super.createChildren ();
RadioBtn = nuevo RadioButton ();
RadioBtnGR = nuevo RadioButtonGroup ();
RadioBtn.group = RadioBtnGR;
addChild (RadioBtn);
}
updateDisplayList protegido invalidación de la función (unscaledWidth
: Número
, unscaledHeight: Número): vacío
{
super.updateDisplayList (unscaledWidth
, unscaledHeight
);
si (super.data) {
tld del var: TreeListData = TreeListData (super.listData
);
si (tld.hasChildren) {
this.RadioBtn.visible = falso;
} {
this.RadioBtn.visible = verdad;
}
si (RadioBtn.visible) {
this.RadioBtn.x = super.label.x
super.label.x = this.RadioBtn.x + 17;
this.RadioBtn.y = super.label.y+8;
}
}
}
}
}
________________________________________
2- el código de uso es:
backgroundColor= " #FFFFFF " de http://www.adobe.com/2006/mxml " >
importación mx.collections.ArrayCollection;
importación mx.rpc.events.ResultEvent;
importación mx.controls. Alarma;
función privada TreeClickHandler (acontecimiento: Acontecimiento): vacío
{
selectedXmlList del var: XMLList;
itemObject del var: Objeto = event.currentTarget.selectedItem;
¡si (! myTree.dataDescriptor.isBranch (itemObject)) {
selectedXmlList = myData.item.part. (== itemObject.@parentid del @parentid);
processSelection (selectedXmlList, itemObject.@id);
}
}
processSelection privado de la función (lista: XMLList, Objid: Secuencia): vacío {
artículo del var: XML;
para cada uno (artículo en lista) {
¡si (item.@id! =Objid)
{
item.@checked = falso;
}
{
item.@checked = verdad;
}
}
}
]] >
id= " myTree "
itemClick= " TreeClickHandler (acontecimiento) “
itemRenderer= " RadioButtonTreeItemRenderer "
showRoot= " falso "
width= " 100% "
height= " 100% "
labelField= " @label "
folderClosedIcon= " {falta de información} “
folderOpenIcon= " {falta de información} “
defaultLeafIcon= " {falta de información} “
dataProvider= " {myData} “
openItems= " {myData. .item} “>