Установка truncateToFit для метки в дереве - PullRequest
0 голосов
/ 03 октября 2011

У меня есть компонент дерева, сидящий в разделенном окне. Я хочу отобразить «...» на метках узла, если размер разделенного поля изменяется. У меня есть пользовательский 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 голосов
/ 03 октября 2011

Вы можете установить

labelDisplay.maxDisplayedLines = 1

Кроме того, чтобы иметь возможность усекать, labelDisplay должен иметь указанную ширину. Я не знаю, каково поведение по умолчанию внутри рендерера. Вы можете попытаться сначала установить ширину на самом рендерере (абсолютное или в процентах). Если это не работает, установите его на ярлык «Дисплей».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...