在树中的Label上设置truncateToFit

时间:2011-10-03 11:06:43

标签: flex

我有一个树组件坐在一个分开的盒子里。如果调整分割框的大小,我想在节点标签上显示“...”。我有一个自定义itemrenderer,并一直在查看labelFunction属性以及在自定义itemrenderer中尝试各种方法。没有任何快乐。 任何指针都会受到赞赏。

下面是我设置它的一些示例代码...

我定义了一个树......

<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"
>

Custom Renderer是一个ActionScript类,它扩展了TreeItemRenderer ...

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  { 
   ...
} 

}

1 个答案:

答案 0 :(得分:0)

您可以设置

labelDisplay.maxDisplayedLines = 1

另外,为了能够截断,labelDisplay必须具有指定的宽度。我不知道渲染器中的默认行为是什么。您可以尝试首先在渲染器本身上设置宽度(绝对值或百分比)。如果它不起作用,请在labelDisplay上设置它。