2011-10-03 2 views
0

트리 구성 요소가 분할 된 상자에 있습니다. 분할 된 상자의 크기를 조정하면 노드 레이블에 '...'을 표시하려고합니다. 사용자 정의 itemrenderer가 있고 labelFunction 속성을 살펴 보았을뿐 아니라 사용자 정의 itemrenderer에서 다양한 접근 방식을 시도했습니다. 기쁨이 전혀 없습니다. 모든 포인터가 감사하겠습니다. 트리의 레이블에 truncateToFit 설정

을 heres 내가 그것을 설정하는 방법 FO 일부 샘플 코드 ...

나는 나무를 정의 ...

<mx:Tree 
id="tree" 
dataProvider="myData" 
labelFunction="treeNodeLabel" 
width="100%" height="100%" 
click="handleClick(event)" 
mouseMove="handleMouseMove(event)" 
itemRollOver="handleItemOver(event)" 
itemRollOut="handleItemOut(event)" 
doubleClickEnabled="true" 
doubleClick="handleDoubleClick(event)" 
iconFunction="customIcon" 
dragEnabled="true" 
dropEnabled="true" 
dragMoveEnabled="true" 
dragOver="onDragOver(event)" 
dragStart="onDragStart(event)" 
dataDescriptor="{new DiagramTreeDataDescriptor()}" 
itemRenderer="myCustomeRenderer" 
borderStyle="none" 
> 

사용자 정의 렌더러는 TreeItemRenderer를 확장하는 ActionScript 클래스입니다

. ..

public class myCustomRenderer extends TreeItemRenderer { 

public function myCustomRenderer() { 
    super(); 
} 

/** 
* Create child objects of the component. 
*/ 
override protected function createChildren():void { 
    super.createChildren(); 
    createIcon(); 
    addListeners(); 
    addChild(Icon1); 
    addChild(Icon2); 
} 


private function createIcon() : void { 
    ... 
} 

private function addListeners() : void { 
    ... 
} 

private function Icon1Click(event: MouseEvent):void { 
    ...    
} 

private function Icon2Click(event: MouseEvent): void { 
    ... 
} 

private function onLabelMouseOver(event : MouseEvent):void { 
    ... 
} 

private function onLabelMouseOut(event : MouseEvent):void { 
    ... 
} 

private function getDescription(node : XML):String { 
    ...    
} 

override protected function updateDisplayList(...) { 
    ... 
} 

override public function set listData(value:BaseListData):void { 
    ... 
} 

}

,
+0

렌더러 내부에 s : Label을 사용하고 있습니까? – Exort

+0

안녕하세요, 저는 약간 익명 스럽기 때문에 사과하라고 아주 새롭습니다! 대답은 '아니오'입니다 (제 생각!). cutom 렌더러를 사용하는 동안 각 노드에 대해 표시되는 아이콘을 클릭하는 등의 다른 작업을 제어하는 ​​데 사용됩니다. 나는 어떤 디스플레이 방법이든 기본값을 사용하고 있다고 생각한다. 예를 들어 내 사용자 정의 렌더러에서 super.label을 참조하고 "apprears"가 TextField (자를 지원하지 않음)로 참조됩니다. 죄송합니다 다시 모호한 경우 – fatlog

+0

어쩌면 당신은 일을 명확하게하기 위해 코드를 게시 할 수 있습니다 – Exort

답변

0

당신은 잘라야 할 수 있도록, 또한

labelDisplay.maxDisplayedLines = 1 

을 설정할 수 있으며, labelDisplay는 지정된 폭이 있어야합니다. 렌더러 내부의 기본 동작이 무엇인지 알 수 없습니다. 먼저 렌더러 자체의 너비 (절대 또는 백분율)를 설정할 수 있습니다. 작동하지 않으면 labelDisplay에 설정하십시오.

+0

noob 질문! 나는 이것을 어디에 두어야합니까 ?? BTW 나는 현재 flex sdk를 사용하여 붙어있다. 3.2 – fatlog

+0

오, 그렇다면 스파크 구성 요소가 없다는 것을 의미한다. Mx 구성 요소에 대해 많이 알지 못하므로이 문제를 해결할 수 없습니다. 죄송합니다. – Exort

+0

걱정할 필요가 없습니다. 내가 말했듯이, 나는 sdk 3.2에서 "붙어있다". :( – fatlog