【发布时间】: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