最近有个需求,需要用F7选择客户组别,物料组别、供应商组别等,但是用户体验就不说了,点F7出来一张表,没任何层次结构,客户相当不满意,要选择出来一颗树,现在讲F7显示效果如下,并列出代码。
需要实现这个功能,要做如下
注意:我的包全部在如下路径,如果要自己修改,请自己替换路径:com.kingdee.eas.shine.utils.client
1、设计TreeUI:继承CoreUI,放一个TreeView,一个Tree 一个确定按钮,一个取消按钮
2、发布TreeUI元数据,实现类代码如下(未写注释)
/** * output package name */ package com.kingdee.eas.shine.utils.client; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Iterator; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import org.apache.log4j.Logger; import com.kingdee.bos.BOSException; import com.kingdee.bos.ctrl.swing.tree.DefaultKingdeeTreeNode; import com.kingdee.bos.ctrl.swing.tree.KingdeeTreeModel; import com.kingdee.bos.metadata.data.SortType; import com.kingdee.bos.metadata.entity.EntityViewInfo; import com.kingdee.bos.metadata.entity.FilterInfo; import com.kingdee.bos.metadata.entity.SelectorItemCollection; import com.kingdee.bos.metadata.entity.SorterItemCollection; import com.kingdee.bos.metadata.entity.SorterItemInfo; import com.kingdee.bos.ui.face.CoreUIObject; import com.kingdee.eas.framework.ITreeBase; import com.kingdee.eas.framework.TreeBaseCollection; import com.kingdee.eas.framework.TreeBaseInfo; import com.kingdee.eas.shine.cm.CostObjectTreeFactory; import com.kingdee.eas.util.client.MsgBox; /** * output class name */ public class TreeUI extends AbstractTreeUI { private static final Logger logger = CoreUIObject.getLogger(TreeUI.class); ITreeBase iTreeBase; TreeBaseInfo selectData; private boolean isCancel; public static final String STRTREEBASE = "STRTREEBASE"; public static final String TREE_TITLE = "TREE_TITLE"; public static final String TREE_FILTER = "TREE_FILTER"; /** * output class constructor */ public TreeUI() throws Exception { super(); isCancel = false; } public boolean isCanceled() { return isCancel; } public TreeBaseInfo getData() { return selectData; } @Override public void onLoad() throws Exception { super.onLoad(); buildTree(); btnOK.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { btnOK_click(); } }); btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { isCancel = true; disposeUIWindow(); } }); treeMain.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { treeMain_valueChanged(e); } }); treeMain.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { treeMain_clicked(e); } }); } protected void treeMain_clicked(MouseEvent e) { if (e.getClickCount() == 2) { btnOK_click(); } } private void buildTree() throws BOSException { EntityViewInfo evi = new EntityViewInfo(); SelectorItemCollection sic = evi.getSelector(); sic.add("*"); SorterItemCollection sorters = new SorterItemCollection(); SorterItemInfo sorter = new SorterItemInfo("longNumber"); sorter.setSortType(SortType.ASCEND); sorters.add(sorter); evi.setSorter(sorters); String title = (String) getUIContext().get(TREE_TITLE); setUITitle(title); iTreeBase = (ITreeBase) getUIContext().get(STRTREEBASE); FilterInfo filter = (FilterInfo) getUIContext().get(TREE_FILTER); if(filter!=null){ evi.setFilter(filter); } TreeBaseCollection collection = iTreeBase.getTreeBaseCollection(evi); DefaultKingdeeTreeNode root = new DefaultKingdeeTreeNode(title); DefaultKingdeeTreeNode lastNode = root; String lastLongNumber = null; for (Iterator iterator = collection.iterator(); iterator.hasNext();) { TreeBaseInfo group = (TreeBaseInfo) iterator.next(); if (lastLongNumber == null) { lastLongNumber = group.getLongNumber(); DefaultKingdeeTreeNode groupNode = new DefaultKingdeeTreeNode(group.getName()); lastNode = groupNode; root.add(groupNode); } else { String longNumber = group.getLongNumber(); DefaultKingdeeTreeNode groupNode = new DefaultKingdeeTreeNode(group.getName()); if (longNumber.startsWith(lastLongNumber)) { lastNode.add(groupNode); } else { DefaultKingdeeTreeNode parent = getParent(lastNode, group.getLevel()); if (parent != null) { parent.add(groupNode); } } lastNode = groupNode; lastLongNumber = longNumber; } lastNode.setUserObject(group); } treeMain.setModel(new KingdeeTreeModel(root)); } private DefaultKingdeeTreeNode getParent(DefaultKingdeeTreeNode node, int level) { if (node.getLevel() == 0) { return node; } else if (node != null) { Object object = node.getUserObject(); if (object != null && object instanceof TreeBaseInfo) { TreeBaseInfo group = (TreeBaseInfo) object; if ((level - 1) == group.getLevel()) { return node; } else { return getParent((DefaultKingdeeTreeNode) node.getParent(), level); } } } return null; } protected void btnOK_click() { if (selectData == null) { MsgBox.showWarning(this, "请选择节点"); abort(); } isCancel = false; disposeUIWindow(); } protected void treeMain_valueChanged(TreeSelectionEvent e) { if (e.getNewLeadSelectionPath() != null) { DefaultKingdeeTreeNode node = (DefaultKingdeeTreeNode) e.getNewLeadSelectionPath().getLastPathComponent(); if (node != null) { Object object = node.getUserObject(); if (object != null && object instanceof TreeBaseInfo) { selectData = (TreeBaseInfo) object; } } } } }
3、做一个类实现KDPromptSelector接口
package com.kingdee.eas.shine.utils.client; import java.awt.Dialog; import java.awt.Frame; import java.awt.KeyboardFocusManager; import java.awt.Window; import com.kingdee.bos.ctrl.swing.KDPromptSelector; import com.kingdee.bos.metadata.entity.FilterInfo; import com.kingdee.bos.ui.face.IUIWindow; import com.kingdee.bos.ui.face.UIFactory; import com.kingdee.eas.common.client.UIContext; import com.kingdee.eas.common.client.UIFactoryName; import com.kingdee.eas.framework.ITreeBase; import com.kingdee.eas.framework.client.CoreUI; import com.kingdee.eas.util.client.ExceptionHandler; public class TreeF7 implements KDPromptSelector { private IUIWindow window; private String title; ITreeBase iTreeBase; CoreUI owner; FilterInfo filter; public TreeF7(ITreeBase iTreeBase, CoreUI owner, String title,FilterInfo filter) { this.iTreeBase = iTreeBase; this.owner = owner; this.title = title; this.filter=filter; } public Object getData() { Object data = null; try { if (window != null) data = ((TreeUI) window.getUIObject()).getData(); } catch (Exception e) { ExceptionHandler.handle(e); } return data; } public boolean isCanceled() { boolean isCanceled = true; try { isCanceled = ((TreeUI) window.getUIObject()).isCanceled(); } catch (Exception e) { ExceptionHandler.handle(e); } return isCanceled; } public void show() { try { getWindow().show(); } catch (Exception e) { ExceptionHandler.handle(e); } } private IUIWindow getWindow() throws Exception { if (window == null) { Object owner = null; Window win = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow(); if (win instanceof Frame) { owner = (Frame) win; } else if (win instanceof Dialog) { owner = (Dialog) win; } UIContext ctx = new UIContext(owner); ctx.put(TreeUI.TREE_TITLE, title); ctx.put(TreeUI.STRTREEBASE, iTreeBase); ctx.put(TreeUI.TREE_FILTER, filter); window = UIFactory.createUIFactory(UIFactoryName.MODEL).create(TreeUI.class.getName(), ctx); } return window; } public void setTitle(String title) { this.title = title; window = null; } public String getTitle() { return title; } }
3、监听F7的选择事件
kdtMaterial_materialgroup_PromptBox.addSelectorListener(new SelectorListener(){ public void willShow(SelectorEvent paramSelectorEvent) { try { IMaterialGroup iTree = MaterialGroupFactory.getRemoteInstance(); FilterInfo filter= new FilterInfo(); filter.getFilterItems().add(new FilterItemInfo("groupStandard.number","BaseGroupStandard")); TreeF7 f7 = new TreeF7(iTree, getui(), "物料组别",filter); kdtMaterial_materialgroup_PromptBox.setSelector(f7); } catch (Exception e1) { handUIException(e1); } }});
protected CoreUI getui() { return this; }
相关推荐
在IT行业中,"EAS控件帮助类"是针对金蝶(Kingdee)企业应用系统(Enterprise Application System,简称EAS)的一种定制化开发工具。EAS是金蝶公司推出的一款全面的企业级管理软件,旨在帮助企业实现信息化管理,...
- **数据绑定**:EAS控件可以与数据库字段绑定,动态显示或接收数据,实现数据的实时更新。 **4. 控件类型与应用场景** - **输入型控件**:如文本框、日期选择器,用于用户输入数据。 - **显示型控件**:如标签、...
综上所述,这些文件组合在一起,描述了一个EAS系统中涉及部门F7管理的部分,包括部门或账户的树形结构展示、批量信贷操作、以及簿记组织的编辑功能。这些功能旨在帮助企业管理其组织结构,处理信贷业务,并维护准确...
### EASWeb控件培训详解 #### 概述与特性 EASWeb控件是专为Web开发设计的,...通过系统掌握EASWeb控件的开发与应用,开发者能够构建出功能丰富、界面美观且具有良好兼容性的Web应用,极大地提升用户体验和项目效率。
金蝶BOS(Business Operation System)开发EAS控件是一套完整的开发工具集,主要用于构建企业级应用系统。金蝶EAS(Enterprise Application System)是金蝶国际软件集团推出的一款面向大型企业的综合业务管理平台,...
EAS(Enterprise Asset Management,企业资产管理)系统是一种用于组织、控制和优化企业资产的软件解决方案。它涵盖了资产的整个生命周期管理,包括规划、采购、安装、维护、退役和处置等阶段。EAS系统的主要目标是...
EAS系统部署常见问题2013 FAQ EAS 系统部署常见问题 FAQ 是一份详细的技术文档,为 EAS 产品支持部刘习红所编写,旨在解决 EAS 系统部署过程中常见的问题。该文档涵盖了 EAS 系统安装、部署的各种问题的处理,适用...
EAS,全称为Enterprise Asset Management(企业资产管理),是一种先进的信息化管理系统,主要针对企业的固定资产、库存物资、设备等资产进行全方位的管理和控制。EAS系统旨在提高企业资产的使用效率,降低运营成本...
EAS系统中功率放大器的闭环发射机控制,AM EAS声磁防盗器
在金蝶EAS财务系统中,用户可以使用快捷键来简化操作,例如[F7]键可以选择已录入摘要库中的摘要,[F11]键可以调出参数设置窗口等。 金蝶EAS财务系统操作手册提供了一个详细的操作指南,帮助用户了解金蝶EAS财务系统...
给F7控件增加值改变监听器。 八、JavaImporter() JavaImporter()方法用于引入Java包,例如,var easNames = JavaImporter();easNames.importPackage(Packages.com.kingdee.eas.base.codingrule);引入了...
意义和EAS系统的发展现状"然后详细介绍EAS系统相关内容,包括EAS系 统的概念,工作原理,工作心呈,EAs系统的几种主要技术以及如何评价EAs 系统的好坏"接着针对本论文实现的EAS系统进行详细描述,涵盖系统的发射 机和接收...
11. 设置F7 默认值:使用pluginCtx.getKDBizPromptBox()方法获取控件,然后使用setValue()方法设置控件的默认值。 12. 客户端调用服务端方法:使用pluginCtx.getKDService()方法获取服务端对象,然后使用invoke()...
EAS系统云巡检工具使用指南 EAS(Enterprise Application Service)云巡检服务是针对企业EAS系统的一种健康检查解决方案,旨在通过云+端的模式提供高效、便捷的系统健康检测服务。此服务旨在预防潜在问题,确保EAS...
金蝶EAS8.0是金蝶公司推出的一款高级企业资源计划系统,旨在帮助企业实现全面的信息化管理。这款系统的用户手册详细介绍了EAS8.0的各项功能和操作流程,为用户提供了一个全面的学习和交流平台。 一、金蝶EAS8.0系统...
- **树形控件操作**:如`TREE`控件,用于构建和管理树形结构的UI组件。 ##### 3. 查询与数据处理 这部分代码主要处理数据的查询和处理逻辑,例如: - **查询方法**:如`ÇQUERY`用于执行特定的查询操作。 - **...
6. **F7控件数据过滤**:F7控件常用于下拉选择,可以通过编写过滤逻辑来控制显示的内容。例如,根据当前输入值动态筛选出匹配的选项。 7. **赋值操作**:在EAS客户端代码中,赋值是非常常见的操作,例如`字段名 = ...
【EAS系统供应链部分实施总结】 EAS系统(Enterprise Application System)在供应链管理中的实施是一项复杂而关键的任务,旨在提升企业的运营效率和信息流转的准确性。以下是对EAS系统供应链部分实施的详细总结: ...
金蝶EAS财务系统是一款全面的企业资源计划系统,专为大型企业设计,旨在提升财务管理效率,实现财务核算的自动化和精细化。本操作手册详细介绍了如何使用金蝶EAS财务系统,帮助财务人员从传统的手工核算模式过渡到...