金蝶EASBOS开发学习笔记
- 格式:doc
- 大小:2.20 MB
- 文档页数:36
BOS开发单据重要笔记.txt一、EditUI必须实现及很重要的方法:1、通过Factory返回月度付款计划接口(必须)protected ICoreBase getBizInterface() throws Exception { // TODO Auto-generated method stubreturn MonthlyPayPlanFactory.getRemoteInstance();}2、返回月度付款计划对象(非必须)Protected IObjectValue createNewData(){MonthlyPayPlanInfo info = new MonthlyPayPlanInfo();return info;}3、返回单据分录(必须)protected KDTable getDetailTable() {// TODO Auto-generated method stubreturn this.kdtEntries;}4、是否允许连续新增,框架默认为true(非必须)protected boolean isContinueAddNew() {return false;}二、ListUI必须实现及很重要的方法:1、通过Factory返回月度付款计划接口(必须)protected ICoreBase getBizInterface() throws Exception { // TODO Auto-generated method stubreturn MonthlyPayPlanFactory.getRemoteInstance();}2、返回编辑界面名称全路径,新增、查看数据时使用getEditUIName(必须)protected String getEditUIName(){return MonthlyPayPlanEditUI.class.getName();}3、初始化查询条件过滤界面(可修改界面)protected CommonQueryDialog initCommonQueryDialog() { CommonQueryDialog dialog =super.initCommonQueryDialog();try{dialog.setTitle("月度付款计划查询");}catch(Exception e){handUIException(e);}return dialog;}4、初始化时,是否进入查询条件过滤界面(默认false,当需要过滤界面时,重写,返回true)protected boolean initDefaultFilter() {// TODO Auto-generated method stubreturn true;}5、查询时,执行查询SQL前,自定义条件protected void beforeExcutQuery(EntityViewInfo ev) { SorterItemCollection coll=new SorterItemCollection();coll.add(new SorterItemInfo("number"));coll.add(new SorterItemInfo("entries.seq"));coll.addObjectCollection(ev.getSorter());ev.setSorter(coll);super.beforeExcutQuery(ev);}6、通用条件过滤界面增加自定义页签protected CommonQueryDialog initCommonQueryDialog(){dialog = super.initCommonQueryDialog();try{dialog.addUserPanel(getUsierPanel());dialog.setShowFilter(true);dialog.setShowSorter(true);dialog.setHeight(380);dialog.setWidth(500);dialog.setTitle(‘客户自定义过滤框’);}catch (Exception e){handUIException(e);}return dialog;}protected CustomerQueryPanel getUserPanel() throws Exception{if (erPanel == null)erPanel = new PurOrderQueryUI();userPanel.onLoad();return erPanel;}三、典型客户端代码1、动态调用UI界面private void makePurOrderUI(PurOrderInfo srcBillInfo) throws EASBizException, UIException,BOSException, Exception {String destBillEditUIClassName =“com.kingdee….PurOrderEditUI”;Map map = new UIContext(this);map.put("srcBillID", srcBillInfo.getId().toString());map.put(UIContext.OWNER, this);map.put("srcBillBOSTypeString",destBillInfo.getBOSType());IUIWindow uiWindow = null ;// UIFactoryName.MODEL 为弹出模式uiWindow =UIFactory.createUIFactory(UIFactoryName.MODEL).create(destBillEditUIClassName, map,null,OprtState.ADDNEW);//可对创建的ui进行操作//((CoreBillEditUI).uiWindow.getUIObject()).//setMakeRelations(btpResult.getBOTRelationCollection()) ;//开始展现UIuiWindow.show();}四、KDTABLE 隐藏其组件里自带的按钮//隐藏kdtable的按钮private void hidePanelButtons(KDTable table){Component c = table.getParent().getParent();if (c instanceof DetailPanel){DetailPanel panel = (DetailPanel) c;//获取btnComponent[] components = panel.getComponents();for(int i = 0; i < components.length; i++){Component component = components[i];if (component instanceof KDPanel){KDPanel kdPanel = (KDPanel) component;if("controlPanel".equals(kdPanel.getName())){panel.remove(kdPanel);}if("entryPanel".equals(kdPanel.getName())){Rectangle entryRect = new Rectangle(0, 0, table.getWidth(), table.getHeight() + 29);kdPanel.setBounds(entryRect);kdPanel.putClientProperty("OriginalBounds",entryRect);panel.add(kdPanel, newKDLayout.Constraints(KDLayout.Constraints.ANCHOR_TOP| KDLayout.Constraints.ANCHOR_RIGHT | KDLayout.Constraints.ANCHOR_LEFT|KDLayout.Constraints.ANCHOR_BOTTOM , entryRect));}}}}}1、如何获得当前单据的所有组织、用户信息;// 获得当前财务组织SysContext sys = SysContext.getSysContext();CompanyOrgUnitInfo orgUnit = sys.getCurrentFIUnit();boolean isBizUnit = orgUnit.isIsBizUnit();// 获得当前用户SysContext sys = SysContext.getSysContext();user = (UserInfo) sys.getCurrentUser();if(user!=null){this.prmtAuditor.setValue(user);}2、bos中如何将F7的控件的背景颜色设置为黄色import com.kingdee.bos.ctrl.swing.KDTextField;((KDTextField)PromptSupportedObj.getEditor()).setCustomBackground Color(new Color(16579551));3、其他控件设置背景色:1.// 文本框,类:com.kingdee.bos.ctrl.swing.KDFormattedTextField2.txtTest.setCustomBackgroundColor(newColor(220,255,255));3.4.// F7控件,类:com.kingdee.bos.ctrl.extendcontrols.KDBizPromptBox5.((KDTextField)prmTest.getEditor()).setCustomBackground Color(new Color(220,255,255));6.7.// 日期控件,类:com.kingdee.bos.ctrl.swing.KDDatePicker8.((BasicFormattedTextField)pkTest.getEditor().getEditor Component())<BR> .setCustomBackgroundColor(new Color(220,255,255));<BR>// 文本框,类:com.kingdee.bos.ctrl.swing.KDFormattedTextFieldtxtTest.setCustomBackgroundColor(newColor(220,255,255));// F7控件,类:com.kingdee.bos.ctrl.extendcontrols.KDBizPromptBox((KDTextField)prmTest.getEditor()).setCustomBackgroundCo lor(new Color(220,255,255));// 日期控件,类:com.kingdee.bos.ctrl.swing.KDDatePicker((BasicFormattedTextField)pkTest.getEditor().getEditorCo mponent()) .setCustomBackgroundColor(newColor(220,255,255));下拉列表框与它们不同,需要特殊处理Java代码1.// 要先写一个内部类,其中实现了ListCellRenderer接口。
金蝶BOS平台开发笔记一、入门篇。
新建、修改一种主从表1.建主表➢第一步,在业务建模视图下,新建业务单元。
我们新建一种名为 MainChild_Demo旳单元,别名起为“主从表演示”。
➢点击下一步,创立方式选择“直接新建”,完毕。
生成旳主表如下图:系统自动创立了4个编辑字段(另有某些字段未在本界面显示,在此不做详述。
)2.新增单据体。
仍然在业务视图下,在生成旳“主从表演示”界面上右键,选择“单据信息”,点击“新增单据体”。
新增旳单据体即是从表。
3.字段管理在界面上右键选择“字段管理”,弹出字段管理界面。
➢新增主表字段:在左侧选择“主从表演示”,然后点击“新增字段”即可增长主表字段。
我们新增一种“mainfield1”,字段描述“主表字段1”。
如下图:➢新增从表字段:在左侧选择“第一种表体”,然后点击“新增字段”即可增长从表字段。
我们新增一种“childField1”,字段描述为“从表字段1”,如下图:4.点击保存5.查看新建单元所产生旳对象:打开业务设计视图。
在目录下找到本次新建单元产生旳所有对象。
见下图中选中部分:各扩展名结尾文献旳含义如下:Entity:实体对象。
Table:数据表。
Query:查询表。
Relation:实体关系表。
即实体间相应关系。
Ruleset:Ui:界面。
Bizunit:业务对象。
6.修改实体对象1)主表实体对象旳基本信息:双击打开MainChild_Demo.entity。
一方面展示旳是实体对象旳基本信息,见下图:➢父实体对象:是MainChild_Demo实体对象旳父类。
可以看到,它继承自com.kingdee.eas.framework.app.Database对象。
从这个对象继承过来旳对象,拥有数据库编辑方面旳功能。
➢相应表对象:这个是实体相应旳物理数据表,可以看到,它相应旳是com.kingdee.eas.xuehongtao.demo.app.CT_DEM_MainChild_Demo(蓝色部分是数据表途径,根据每个人新建单元时选择旳文献夹不同而不同)。
晚上睡不着,打开电脑翻到了一些当年在金蝶时写的笔记,还是让它们出来透透气吧,要不连我都忘记自己曾经写过这些东西了。
金蝶是我第一个东家,也是我技术能力提升最快的地方,真心祝福金蝶能高飞。
EAS开发环境部署一.开发环境的搭建由于现场开发环境与研发中心的差异,搭建环境会有差异,为了保证最后环境的搭建成功,我们分步骤进行搭建,以方便其中的一步如果出错,方便好定位问题1.1使用BOS启动客户端启动BOS,新建一个工程加载EAS Jar包(D:\kingdee\eas\server\lib\下的所有目录的jar包,有些麻烦,所以可以考虑把所有jar包拷贝到一个目录下)这里我把所有的jar包都拷贝到了我自己建的目录allJars然后BOS加载添加外部JAR设置JVM参数-DEAS_HOME=D:\kingdee\eas(EAS_HOME相当于JDK_HOME)-DEAS_SERVER=tcp://localhost:11034(服务端的IP)-Dlog4j.configuration=file:D:\kingdee\eas\client\deploy\client\log4j.properties( Log4j日志配置文件路径,可以没有这个参数)Ok,jar包加载了,启动参数设置了后还需要修改几个地方D:\kingdee\eas\client\deploy\client\vmoptions.properties增加客户端启动的元数据加载路径,这部非常关键OK,现在可以启动试试了OK,搞定(这只是万里长征的第一步)1.2部署自己的代码和元数据到环境中这一步也就是让你的代码和元数据要优先于EAS原有代码和元数据的加载代码优先的设置方法:虚拟W盘,命令:subst w:你要虚拟的目录(相应的去掉W盘的命令是subst w: /d)W盘建立好后,在W盘创建dev目录,并建立两个文件server-user.liblist和client-user.liblist这两个文件用于记录优先加载的目录是那些,因为我开发的代码都会编译到D:\MyCode\EAS_01\bin,所以我制定客户端优先加载这个目录,服务端是一样的道理然后我们设置元数据的优先加载方式客户端,修改D:\kingdee\eas\client\deploy\client\vmoptions.properties,修改部分见红线,因为我的元数据会发布到D:\kingdee\apusic\metas;,所以这里可以设置为优先加载服务端修改D:\kingdee\eas\server\bin\\common.pm这个文件,原理和客户端修改类似这个时候,基本都差不多了,我们尝试下看我们的单据是否能够被优先加载(这里有点文档思路写的有点跳跃,大家将就着看把,时间紧迫,顾不得字斟句酌了,J)1.3启动EAS,看我们的单据能否使用首先用administrator登陆增加到EAS菜单中去重新用用户登陆,可以看到我们的菜单项了EAS是MVC架构的么?2006年3月EAS是MVC架构的么?逐一分析,先看看EAS是否具备M、V、C这三个元素Modle--xxxControllerBean,在ControllerBean中除了定义了对实体的CRUD(addnew,getValue,update,delete)操作外,还包括实体相关的业务操作方法,如submit,audit,freeze等,应该算的上标准的Modle,下边是摘抄的一些对Model的定义模型(Model):就是业务流程/状态的处理以及业务规则的制定。
金蝶EAS BOS工作流开发1. 流程配置基本知识及示例1.1. 重要概念1.1.1.流程变量流程变量是工作流引擎和业务系统的数据交互的桥梁。
工作流承载业务,驱动业务流程,但是不会执行业务。
工作流中的业务执行,全部都会委托给具体的业务模块执行。
那么,这些被工作流分割的业务功能,在工作流中被调用执行的时候,如何保证做操作的数据的一致性?通过流程变量,在每一步的业务功能执行的过程中,将业务数据保存在流程变量中,那么整个流程的后续活动中,都可以引用该流程变量,来完成业务功能,保证业务数据的一致性。
例如:在凭证的审批流程中,新增凭证审批,审批的时候为什么可以正确定为到刚刚提交的那张凭证,而不是别的凭证?流程变量起到了重要的作用。
在凭证新增之后,将可唯一标示凭证的ID保存到流程变量中,在审批的时候将流程变量中的值传递给凭证,就可以根据这个ID获取到一张凭证了。
流程变量在流程实例的生命周期内都是有效的。
1.1.2.任务输入输出任务输入:在业务发生之前,有工作流传递给业务的数据。
以凭证的过账为例,某个用户收到一条凭证过账的消息,双击消息处理。
在双击之后、凭证的界面弹出之前,工作流会把定义的入口参数变量中的值传递给凭证,凭证根据这个值来展现特定的单据,展现特定的功能。
任务输出:在业务发生之后,由业务系统传递给工作流,需要保存在流程变量中的数据。
仍以凭证过账为例,在用户操作完凭证过账之后,工作流继续流转之前,如果流程定义中定义了任务的输出,那么,就会将凭证对应的属性的数据,保存在流程变量中。
已备在后续的流程活动中使用。
1.2. 注意事项l 绘画工作流图之前一定要先将业务流整理清楚,分析业务流的特性,提取可以抽象出来公用的东西,分析是否可以进行优化等,好的业务流程可以直接映射为工作流流程。
l 利用“流程变量”的威力,建立单据和流程之间数据交换的桥梁。
输入输出参数用来在流程和单据之间进行数据的传递。
输入输出参数和流程变量搭建了流程和单据之间的数据联系通道。
六和集团金蝶EAS系统初始化培训笔记初始化步骤维护组织单位---建部门---建职位---建职员---权限维护(即建用户)---细化科目---辅助项目---金额录入---正常使用管理单元(即组织单元):先用管理员进入系统,维护组织单位、建部、建职位、建职员、赋权限,维护以上内容必须是管理员才有权限;维护组织单元时先维护“行政属性”和“财务属性”。
行政属性中维护“上级行政组织”、“组织单元类型”、“库存委托组织”行政组织中的组织单元类型选公司(此为针对公司组织单元架构的,当定义部门组织单元架构时此选项就选部门了);财务属性中行业为零售行业,财务实体组织打勾,本位币核算;采购属性中“实体库存组织”添加、“采购实体组织”打勾、“上级采购组织”维护、“记账委托组织”维护、“行政组织”中添加公司所有部门(此操作需要在建部门后再回来添加);销售属性同上;库存属性中注意“业务状态”为正常使用;“成本中心”和“利润中心”为虚体组织,注意“实体组织”栏不打勾;HR组织默认不维护;以上所有部门都设“行政组织”;建部门:建部门时只定义“行政组织”和“责任中心-成本中心”、“责任中心-利润中心”三个项目,“行政组织”属性中“组织单元类型”选为“部门”(在此就可以看到与公司组织单元架构的区别了),“责任中心-成本中心”属性中的“类型”根据单元属性选择;部门流水号建议用公司编码+部门编码(流水号,两位即可);建职位、职员、用户:职位编码用:公司编码+部门编码+流水号;注意要在各个部门下建设职位,即鼠标点部门图标后再点新增;各部门首次建的职位为本部门的“负责人职位”,此选项会自动打勾,本部再建人员的上级职位为本部门主管,注:各部门只有一个“负责人职位”选项可打勾;建职员时候选中该职员所属职位在点击新增进行,注:定义职员时“编码”不用填,为自动形成;EAS有两类用户:“管理员”和“普通用户”。
“管理员”负责维护管理单元、建立用户和设置权限,管理员不能做业务操作;“普通用户”可以维护组织单元、基础数据以及执行各项业务操作。
/new_detail.asp?newsid=67KIS专业版如何改变单据上面的数量列的小数位,把小数点的小数位变成两位?在物料属性中修改数量和单价的精度。
KIS专业版固定资产清理产生的变动是可以删除的KIS迷你版年节后新增凭证默认日期是1月1日,要先录入一张凭证,录入第二张就是当天的日期了。
K3删除初始化固定资产反初始化后,进入固定资产管理------业务处理----新增卡片,进入后会弹出个新增卡片的界面点取消后,刷新,初始化时候录入的卡片就可以看到了,做相应的修改删除就可以了。
K3数据导入导出开始所有程序金蝶K3 RISE K3工具K3工具包BOS平台BOS 数据交换平台登陆进去点基础资料新建任务下一步导入基础资料数据连接选择帐套KIS专业版V11.0安装完成后,在使用过程中经常自动弹出错误提示,kis back process 运行时错误‘-8880(ffffdd50)’:从字符串转换为datetime时发生语法错误请高人详细指点,如有相关补丁,请告知。
谢谢!控制面板中--短日期改为2011-04-29格式财务数据的备份是财务信息化管理工作中重要的一个环节,让我们立即进入金蝶系列财务数据备份专题:一、备份前的准备工作:数据的存放规划:内容版本建议路径(不是C 盘) 金蝶软件文件目录金蝶KIS D:\金蝶软件数据库文件目录金蝶KIS D:\金蝶账套数据库备份目录金蝶KIS E:\金蝶备份注意:1、金蝶KIS数据库文件的扩展名为.AIS;2、金蝶KIS软件默认安装路径在C盘,在安装时应事先调整。
3、金蝶KIS软件数据存放目录默认为金蝶KIS软件安装路径;在新建账套时建议单独设立专用文件夹。
4、新建账套名应为公司全称二、备份的最佳时机:1、月结备份:每月结账前作好备份,保存每月财务数据,同时避免在结账时出现错误。
2、年底备份:作为财务资料的年底归档保存,同时以防年结时出现错误可及时恢复。
3、特殊备份:当录入大量资料后,可不必等到下班或月底年底,因工作量大可及时备份,避免重复大量工作。
金蝶EAS BOS开发学习笔记一.环境准备先把需要用到的透视图和相应的视图打开,在后面的练习中需要用到。
导入eas包后的结构如上图所示。
BOS透视图下常用到的窗口如上图所示,这些必须打开。
项目属性配置如下图所示:下面是Java透视图中的配置。
EAS 项目的配置数据中心配置调试Config二.需要用到的热键CTRL+SHIFT+R 打开资源CTRL+SHIFT+T 打开类型三.制作第一个列表查询界面打开“金蝶BOS设计开发工具”透视图1.打开eas/metadata/com/kingdee/eas/demo 节点说明:app目录下一般存放实体、表、查询等元数据;Client目录下一般存放ui,即界面数据;其他公共对象,如枚举、异常等通常放在与app、client同级目录中。
2.在app文件夹下新建实体XueLi(学历),父实体选择com.kingdee.eas.framework.app.DataBase3.右击XueLi.entity,在弹出菜单中选择“实体导出表”,保留默认值,名称为T_DE_XueLi4.打开T_DE_XueLi.table,修改主键名称,避免因为重名导致建表错误5.右击T_DE_XueLi.table,选择“导出...”,在弹出窗口中选择“导出数据表”6.打开管理控制台,在“数据中心”选择使用的数据中心,再打开“数据库管理”,把生成的CreateTable.sql中的内容COPY进去,点击工具栏的“执行(F5)”,最后“提交”。
7.在app文件夹下新建查询XueLiQuery,实体选择XueLi.entity8.打开查询XueLiQuery,选择字段标签页,选择“导入”,将要查询的字段添加进来,并调整各字段顺序。
还应该在“其它”页中定义排序和主键字段。
9.在client文件夹下新建UI,父对象选择com.kingdee.eas.framework.client.ListUI(列表界面),BO对象选择XueLiQuery.query,其他用默认值即可。
(W:\apusic\metas)10.单击鼠标右键,在弹出菜单中选择“编辑表信息”,选择ID列,把hide属性值修改为true,以隐藏不希望在列表中显示的列。
注意:ID列不管是否需要显示,必须要存在于列表中,否则会出现后文所述的错误。
四.发布列表界面,查看效果1.建立Java发布目录:D:\gmis310_src\demo\dev\src2.选择包的根节点eas,右键选择属性,在弹出窗口中选择Solution发布方案信息,新增一个发布方案,命名为demo3.Java发布目录输入前面建立的目录,J2EE发布目录及元数据发布目录输入与其他发布方案相同的目录W:\apusic\metas4.选择app目录下XueLi.entity,单击右键,选择发布;发布方案选择demo,完成后察看“校验信息”视图,发现有错误提示,直接双击,打开错误5.在逻辑键信息中增加CoreBase.id,保存6.清除校验信息视图中的内容,再点击工具栏上的“清除元数据缓存”,否则有可能会导致再次发布失败7.再次发布XueLi.entity,成功。
8.选择demo文件夹,右键,选择“发布”,将前面建立的所有元数据(.table,.entity,.query,.ui)全部选中,再次进行发布。
9.切换到Java透视图。
10.选择bs_dio节点,单击鼠标右键,刷新,让新建立的demo文件夹显示出来。
11.选择bs_dio节点,单击鼠标右键,“构建路径”->“配置构建路径”,将"demo/dev/src"添加进来,在自动构建完成之后,可以在D:\gmis310_src\bin\com\kingdee\eas\demo 看到编译好了的class文件12.重新启动gmis_server服务器,然后用administrator用户登录13.打开“系统->客户化菜单编辑”,新增菜单,UI对象为com.kingdee.eas.demo.client.XueLiListUI14.保存后重新登录,进入系统后可以看到此菜单,但此时双击报错,查看控制台日志,可知是有抽象类方法没有实现15.在Java透视图中打开XueLiListUI.java文件,此时可以看到有错误提示,点击鼠标,自动实现接口类的框架代码。
此时可以看到项目已经不再报错了。
进入系统后,发现点击“新增”按钮时报错。
16.按CTRL+SHIFT+T,查找DiplomaListUI,打开DiplomaListUI.class文件(这是系统中已有的学历窗体)。
17.在XueLiListUI.java中,参考DiplomaListUI实现getEditUIName和getBizInterface方法。
protected ICoreBase getBizInterface() throws Exception { return XueLiFactory.getRemoteInstance();}protected String getEditUIName() {return"com.kingdee.eas.basedata.hraux.client.DiplomaEditUI";}至此,列表UI已可正常执行,但新增界面调用的是系统原有的DiplomaEditUI。
接下来再实现我们自己的EditUI。
五.制作对应的编辑界面1.切换到BOS设计视图,在Client下新建UI,命名为XueLiEditUI,父对象为com.kingdee.eas.framework.client.EditUI(编辑界面),BO对象选择XueLi.entity,绑定控件时只保留需要用户输入的控件。
2.发布此UI,发布方案选择demo3.切换到Java透视图,刷新/bs_dio/demo/dev/src 目录,让新加的UI出现在树中,此时会自动构建,提示有错误4.打开XueLiEditUI.java,查看错误信息,发现是有未实现的抽象方法,生成它5.打开DiplomaEditUI的JAVA类,将createNewData和getBizInterface方法的代码COPY到XueLiEditUI.java中,并做相应修改。
6.打开XueLiListUI.java,修改getEditUIName方法,返回值改成com.kingdee.eas.demo.client.XueLiEditUI7.重新运行代码,可以看到现在已可以调出新做的编辑窗口,增加二条数据,可以成功保存。
8.返回到ListUI,点击各条记录时,发现提示"没有定义正确的keyField,请重载getKeyFileedNmae()方法"。
(如果前面步骤严格按照截图中操作,则不会出现此错误,因此不需要后面的这几步)9.经比较,发现在查询对象中没有定义主键ID。
因此,打开XueLiQuery.query,在字段页中增加id字段,在其它页中增加id字段的主键定义。
10.问题还不在这里。
打开XueLiListUI,重新绑定XueLiQuery.query,把ID列加入到表格中,然后设置此列为隐藏。
11.保存后重新发布,再在java视图中刷新,重新构造应用。
12.重启Server,然后起动应用,测试成功。
六.需要注意的问题1.关于发布的问题只要是更改了app下的对象,一定要重新发布。
由于app的发布目录是在W:\apusic\metas\com\kingdee\eas\demo\app目录下,这是服务器的目录,因此发布之后必须要重启服务器才能生效。
如果更改了client下的对象,由于只是在客户端的,因此发布后只需重启应用即可。
2.关于查询时的过滤条件问题如下图所示,在查询时,过滤条件中没有可供选择的内容。
解决方法是打开列表界面的查询对象,如上图所示,在扩展属性中加入通用查询条件即可。
注意此扩展属性是针对每个字段进行设置的。
3.EditUI中数据保存前,对数据进行合法性校验的问题通常有二种方法。
一种是重载actionSubmit动作,在代码中进行处理。
此种方法需要先在EditUI中生成Action事件,以便在发布后超类中有相应的虚方法,如此在继承类中才可以重载方法。
public void actionSubmit_actionPerformed(ActionEvent e) throws Exception{//名称是否可为空if (txtName.getText() == null || txtName.getText().trim().length() == 0) { MsgBox.showError(this, "请输入名称!");this.txtName.requestFocusInWindow();return;}//编码是否为空if (txtNumber.getText() == null || txtNumber.getText().trim().length() == 0) {MsgBox.showError(this, "请输入编码!");this.txtNumber.requestFocusInWindow();return;}s uper.actionSubmit_actionPerformed(e); }此种方法较繁琐。
另一种方法较简单。
打开基类的EditUI.class,可以看到有verifyInput方法是空的,在保存之前基类会调用此方法。
因此,只需要在继承类中重载实现此方法即可。
在大多数情况下,推荐使用此种方法进行数据合法性校验。
protected void verifyInput(ActionEvent e) throws Exception {super.verifyInput(e);//名称是否可为空if (txtName.getText() == null || txtName.getText().trim().length() == 0) { MsgBox.showError(this, "请输入名称!");this.txtName.requestFocusInWindow();SysUtil.abort();}//编码是否为空if (txtNumber.getText() == null || txtNumber.getText().trim().length() == 0) {MsgBox.showError(this, "请输入编码!");this.txtNumber.requestFocusInWindow();SysUtil.abort();}}七.第二个DEMO:制作一个主从表示例1.在app文件夹下新建实体OrderSheet (订单)2.。