Flex 데이터 원본 기반 Menu Tree 구현 코드
 
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
fontFamily="simsun" fontSize="12" 
layout="absolute" creationComplete="menu.send();" width="242" height="442" initialize="init()"> 
<mx:Script> 
<![CDATA[ 
import mx.controls.Alert; 
import mx.events.ListEvent; 
import mx.collections.ArrayCollection; 
import mx.rpc.events.ResultEvent; 
[Bindable] 
private var strUrl:String = "TreeMenus.xml"; 
[Bindable] 
private var menus:XML; 
[Bindable] 
[Embed("open.gif")] 
public var openicon:Class; 
[Bindable] 
[Embed("close.gif")] 
public var closeicon:Class; 
[Bindable] 
[Embed("leaf.gif")] 
public var leaficon:Class; 
private function init():void 
{ 
this.strUrl = this.parameters.url; 
} 
private function LoadMenu(event:ResultEvent):void 
{ 
menus = XML(event.result); 
var results:XMLList = menus.node; 
tree1.dataProvider = results; 
} 
//       
private function treeIcon(item:Object):Class 
{ 
var node:XML = XML(item); 
trace('icon:' + node.@icon); 
var str : String = node.@icon; 
//       
if(node.hasOwnProperty("@icon")) 
{ 
if(node.@icon == 'openicon') 
{ 
return openicon; 
} 
if(node.@icon == 'closeicon') 
{ 
return closeicon; 
} 
if(node.@icon == 'leaficon') 
{ 
return leaficon; 
} 
} 
else 
{ 
//     icon         
if(!tree1.dataDescriptor.isBranch(item)) 
{ 
return tree1.getStyle("defaultLeafIcon"); 
} 
if(tree1.isItemOpen(item)) 
{ 
return tree1.getStyle("folderOpenIcon"); 
} 
else 
{ 
return tree1.getStyle("folderClosedIcon"); 
} 
} 
return null; 
} 
/** 
*           
* */ 
private function itemClickHandler(evt:ListEvent):void 
{ 
var item:Object = Tree(evt.currentTarget).selectedItem; 
if (tree1.dataDescriptor.isBranch(item)) 
{ 
//tree1.expandItem(item, !groupTree.isItemOpen(item), true); 
} 
else 
{ 
//       
var node:XML = XML(item); 
//     href 
if(node.hasOwnProperty("@href") && node.hasOwnProperty("@target")) 
{ 
openURL(node.@href,node.@target); 
} 
if(node.hasOwnProperty("@href") && (node.hasOwnProperty("@target") == false)) 
{ 
//    target          
openURL(node.@href,"_blank"); 
} 
} 
} 
//         
private function openURL(url:String ,target:String):void 
{ 
var request:URLRequest = new URLRequest(url); 
navigateToURL(request,target); 
} 
]]> 
</mx:Script> 
<mx:HTTPService url="{strUrl}" id="menu" useProxy="false" 
showBusyCursor="true" result="LoadMenu(event)" resultFormat="xml"/> 
<mx:Tree iconFunction="treeIcon" id="tree1" width="100%" height="100%" labelField="@label" itemClick="itemClickHandler(event)"/> 
</mx:Application> 
 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
id="tree" width="242" height="442" 
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> 
<param name="movie" value="${ctx}/js/as/menu.swf" /> 
<param name="quality" value="high" /> 
<param name="bgcolor" value="#869ca7" /> 
<param name="allowScriptAccess" value="sameDomain" /> 
<!--          --> 
<param name="flashvars" value="url=${ctx}/user/user!renderMenu.do?id=${user.usid}" /> 
<embed src="tree.swf" quality="high" bgcolor="#869ca7" 
width="242" height="442" name="tree" align="middle" 
play="true" 
loop="false" 
quality="high" 
allowScriptAccess="sameDomain" 
type="application/x-shockwave-flash" 
pluginspage="http://www.adobe.com/go/getflashplayer"> 
</embed> 
</object> 
  url    xml       render    
    xml: 
<?xml version='1.0' encoding='utf-8'?> 
<menus> 
<node label='    ' icon="openicon"> 
<node label='    ' icon="closeicon" 
href='/main/user/user-list.jsp' target='mainFrame' /> 
<node label='    ' href='/main/user/action-list.jsp' 
target='mainFrame' /> 
<node label='    ' href='/main/user/role-list.jsp' 
target='mainFrame' /> 
<node label='   ' href='/main/user/user-list.jsp' 
target='mainFrame' /> 
<node label='  '> 
<node label='sub folder' href='' target='mainFrame' /> 
</node> 
</node> 
<node label='  '> 
<node label='      ' href='' target='mainFrame' /> 
<node label='    -    ' href='' target='mainFrame' /> 
</node> 
</menus> 
 를 추가 합 니 다.
를 추가 합 니 다.
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 프로 그래 밍 기반 Menu 기능 메뉴 디자인 인 스 턴 스이 사례 는 안 드 로 이 드 프로 그래 밍 의 Menu 기능 메뉴 를 다 루 고 있다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다. Android 기능 메뉴 의 디자인 은...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.