FlexTree组件
Tree 数据格式以为:
<node label="音乐">
<node label="流行">
<node label="林忆莲" />
<node label="李克勤" />
<node label="刘德华" />
<node label="张学友" />
</node>
<node label="古典">
<node label="李斯特" />
<node label="莫扎特" />
</node>
</node>
Flash Builder 4 Tree组件,这是显示部分。
<s:Panel title="Flex Tree 显示例子"
width="75%" height="75%"
horizontalCenter="0" verticalCenter="0">
<s:VGroup left="10" right="10" top="10" bottom="10">
<s:Label width="100%" color="blue"
text="选择一个树节点."/>
<mx:HDividedBox width="100%" height="100%">
<mx:Tree id="myTree" width="50%" height="100%" labelField="@label"
showRoot="false" change="treeChanged(event);"/>
<s:TextArea height="100%" width="50%"
text="Selected Item: {selectedNode.@label}"/>
</mx:HDividedBox>
</s:VGroup>
</s:Panel>
“treeChanged”处理树节点被改变事件,目的显示节点内容
public function treeChanged(evt:Event):void {
selectedNode = Tree(evt.target).selectedItem as XML;
}
定义一个RemoteObject,目的远程调用Java对象。
<fx:Declarations>
<mx:RemoteObject id="srv" destination="echo2005T" result="onselectresult(event)" fault="onfault(event)"/>
</fx:Declarations>
“onselectresult”处理接收数据,并绑定Tree
private function onselectresult(event:ResultEvent):void{
var xmldocroot:XML=new XML(event.result);
myTree.dataProvider=xmldocroot.child("node");
}
应用程序启动时就要获取数据,所以加一个creationComplete事件处理RemoteObject远程调用Java对象,getAlbumElementToXml_V2是一个Java方法,返回org.w3c.dom.Document类,该类型可以转化为Flex 的XML 类型。
完整Flex2001.mxml
<?xml version="1.0" encoding="utf-8"?>
<!-- Simple example to demonstrate the Halo Tree control. -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="application1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable]
public var selectedNode:XML;
// Event handler for the Tree control change event.
public function treeChanged(evt:Event):void {
selectedNode = Tree(evt.target).selectedItem as XML;
}
//结果处理函数
private function onselectresult(event:ResultEvent):void{
var xmldocroot:XML=new XML(event.result);
myTree.dataProvider=xmldocroot.child("node");
}
//处理错误函数
private function onfault(event:FaultEvent):void{
Alert.show(event.fault.faultString, 'Error');
}
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
// TODO Auto-generated method stub
srv.getAlbumElementToXml_V2();
}
]]>
</fx:Script>
<fx:Declarations>
<mx:RemoteObject id="srv" destination="echo2005T" result="onselectresult(event)" fault="onfault(event)"/>
</fx:Declarations>
<s:Panel title="Flex Tree 显示例子"
width="75%" height="75%"
horizontalCenter="0" verticalCenter="0">
<s:VGroup left="10" right="10" top="10" bottom="10">
<s:Label width="100%" color="blue"
text="选择一个树节点。"/>
<mx:HDividedBox width="100%" height="100%">
<mx:Tree id="myTree" width="50%" height="100%" labelField="@label"
showRoot="false" change="treeChanged(event);"/>
<s:TextArea height="100%" width="50%"
text="Selected Item: {selectedNode.@label}"/>
</mx:HDividedBox>
</s:VGroup>
</s:Panel>
</s:Application>