【问题标题】:Setting truncateToFit on Label in Tree在树中的标签上设置 truncateToFit
【发布时间】:2011-10-03 11:06:42
【问题描述】:

我有一个树组件放在一个分开的盒子里。如果调整分割框的大小,我想在节点标签上显示“...”。我有一个自定义 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"
>

自定义渲染器是一个扩展 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  { 
   ...
} 

}

【问题讨论】:

  • 您在渲染器中使用 s:Label 吗?
  • 嗨,我对 flex 还很陌生,所以如果我有点含糊,我深表歉意!答案是否定的(我认为!)。虽然我有一个自定义渲染器,但它用于控制其他事情,例如单击也为每个节点显示的图标。我想我正在使用默认的任何显示方法。例如,我在我的自定义渲染器中引用了 super.label,它“看起来”是一个 TextField(不支持截断)。如果这含糊不清,再次抱歉
  • 也许你可以发布一些代码让事情更清楚
  • 我在帖子中添加了一些示例代码

标签: apache-flex


【解决方案1】:

你可以设置

labelDisplay.maxDisplayedLines = 1

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

【讨论】:

  • 菜鸟问题!我在哪里放这个??顺便说一句,我目前使用 flex sdk 3.2
  • 哦,那意味着你没有火花组件。我对 mx 组件知之甚少,所以我无法真正帮助您解决这个问题。对不起
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 2013-03-10
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多