import { TreeController, TreeListener, TreeListenerManager, TreeListenType, NodeParam, TreeView, CallbackParam, SymbolGlyphModifier} from '@kit.ArkUI'; //@ComponentV2 @Entry @ComponentV2 export struct LeftSideComponent { private treeController: TreeController = new TreeController(); private treeListener: TreeListener = TreeListenerManager.getInstance().getTreeListener(); @Local clickNodeId: number = 0; aboutToDisappear(): void { this.treeListener.off(TreeListenType.NODE_CLICK, undefined); this.treeListener.off(TreeListenType.NODE_ADD, undefined); this.treeListener.off(TreeListenType.NODE_DELETE, undefined); this.treeListener.off(TreeListenType.NODE_MOVE, undefined); } @Builder menuBuilder1() { Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { Text('新增').fontSize(16).width(100).height(30).textAlign(TextAlign.Center) .onClick((event: ClickEvent) => { this.treeController.addNode(); }) Divider() Text('删除').fontSize(16).width(100).height(30).textAlign(TextAlign.Center) .onClick((event: ClickEvent) => { this.treeController.removeNode(); }) Divider() Text('重命名').fontSize(16).width(100).height(30).textAlign(TextAlign.Center) .onClick((event: ClickEvent) => { this.treeController.modifyNode(); }) }.width(100).border({width: 1, color: 0x80808a, radius: '16dp'}) } aboutToAppear(): void { this.treeListener.on(TreeListenType.NODE_CLICK, (callbackParam: CallbackParam) => { this.clickNodeId = callbackParam.currentNodeId; }) this.treeListener.on(TreeListenType.NODE_ADD, (callbackParam: CallbackParam) => { this.clickNodeId = callbackParam.currentNodeId; }) this.treeListener.on(TreeListenType.NODE_DELETE, (callbackParam: CallbackParam) => { this.clickNodeId = callbackParam.currentNodeId; }) this.treeListener.once(TreeListenType.NODE_MOVE, (callbackParam: CallbackParam) => { this.clickNodeId = callbackParam.currentNodeId; }) let normalResource: Resource = $r('sys.symbol.house'); let selectedResource: Resource = $r('sys.symbol.car'); let editResource: Resource = $r('sys.symbol.calendar'); let nodeParam: NodeParam = { parentNodeId:-1, currentNodeId: 1, isFolder: true, icon: normalResource, selectedIcon: selectedResource, editIcon: editResource, primaryTitle: "部件历史记录", secondaryTitle: "0" }; this.treeController .addNode(nodeParam) .buildDone(); this.treeController.refreshNode(-1, "父节点", "子节点"); } build() { Column(){ SideBarContainer(SideBarContainerType.Embed) { TreeView({ treeController: this.treeController }) .bindMenu(this.menuBuilder1) } .focusable(true) .showControlButton(false) .showSideBar(true) } }}