电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

单据开发-业务单据Edit界面代码中篇(GUI端)

来源:金蝶云社区作者:金蝶2024-09-165

单据开发-业务单据Edit界面代码中篇(GUI端)

关注公众号获取更多金蝶EAS开发方面的内容

公众号.webp

因论坛版权要求,部分图片无法显示,可以直接方位微信公众号链接

https://mp.weixin.qq.com/s/PkKrj8UQYMh02L7iSEW4AA

本篇文档介绍业务单据Editt界面的一些常用监听事件开发

控件的监听一般有两种方式添加

1、通过元数据添加

2、通过代码添加

通过元数据添加相对简单,本篇文章主要讲解通过代码添加监听


01


通过元数据添加监听


操作步骤:

1、打开单据所对应的EditUI界面。

2、选中需要添加事件的控件。

3、打开属性窗口,选中"事件"页签

4、根据Event名称,在Mehod Name列双击之后保存

5、发布对应的UI界面

image.webp





02



重写方法添加逻辑


操作步骤:

1、打开EditUI界面所对应的java代码界面。

2、根据Mehod Name 重写方法名称

image.webp





 

03


通过代码添加监听

       /**
     * output loadFields method
     */
    public void loadFields()
    {
    	detachListeners(); //添加监听
        super.loadFields();
        attachListeners(); //删除监听
    }
    /**
     * 删除监听
     */
    protected void detachListeners() {
		removeDataChangeListener(prmtcompany); //公司
		removeDataChangeListener(prmtdept); //部门
		removeDataChangeListener(txtamount); //金额
		removeDataChangeListener(kdtEntrys); //分录
	}
	/**
	 * 添加监听
	 */
	protected void attachListeners() {
		addDataChangeListener(prmtcompany); //公司
		addDataChangeListener(prmtdept); //部门
		addDataChangeListener(txtamount); //金额
		addDataChangeListener(kdtEntrys); //分录
	}
    /**
     * 添加监听
     * @param com
     */
	protected void addDataChangeListener(JComponent com){
		if(com==null) return;
		final String shortCutName = com.getName();
		//下拉框
		if(com instanceof KDComboBox){  //判断控件类型
			KDComboBox cb = (KDComboBox) com; //转化
			cb.addItemListener(new ItemListener(){  //添加监听
				public void itemStateChanged(ItemEvent e) {
					dataChangeControl(shortCutName,e);  //监听具体处理方法
				}
			});
		}else if(com instanceof KDPromptBox){
			//F7控件
			KDPromptBox prmt = (KDPromptBox) com;
			prmt.addDataChangeListener(new DataChangeListener(){
				public void dataChanged(DataChangeEvent e) {
					dataChangeControl(shortCutName,e);
				}
			});
		}else if(com instanceof KDTable){
			//分录表格控件
			KDTable table = (KDTable) com;
			table.addKDTEditListener(new KDTEditAdapter() {
	            public void editStopped(KDTEditEvent e) {
	            	dataChangeControl(shortCutName,e);
	            }
	        });
		}else if(com instanceof KDFormattedTextField){
			//金额控件
			KDFormattedTextField numberText = (KDFormattedTextField) com;
			numberText.addDataChangeListener(new DataChangeListener(){
				public void dataChanged(DataChangeEvent e) {
					dataChangeControl(shortCutName,e);
				}
			});
		}else if(com instanceof KDCheckBox){
			//单选框
			KDCheckBox box = (KDCheckBox)com;
			box.addChangeListener(new ChangeListener() {
	            public void stateChanged(ChangeEvent e) {
	            	dataChangeControl(shortCutName,e);
	            }
	        });

		}
		//只是添加的常用的监听, 也可以自己加入 日期控件  和文本控件的监听
		 
	}
	/**
	 * 删除监听
	 * @param com
	 *注意 addDataChangeListener 中手动添加的监听 需要在此处进行删除
	 */
	protected void removeDataChangeListener(JComponent com){
		if(com==null) return;
		if(com instanceof KDComboBox){
			//下拉框
			ItemListener[] listeners = com.getListeners(ItemListener.class);
			for(int i=0;i<listeners.length;i++){
				((KDComboBox)com).removeItemListener(listeners[i]);
			}
		}else if(com instanceof KDPromptBox){
			//F7
			KDPromptBox box = (KDPromptBox) com;
			DataChangeListener[] listeners2 = box.getListeners(DataChangeListener.class);
	        for(int i = 0; i < listeners2.length; i++){
	        	box.removeDataChangeListener((DataChangeListener) listeners2[i]);
	        }
		}else if(com instanceof KDTable){
			//分录
			KDTable tb = (KDTable) com;
			KDTEditListener[] listeners2 = tb.getListeners(KDTEditListener.class);
	        for(int i = 0; i < listeners2.length; i++){
	        	tb.removeKDTEditListener((KDTEditListener) listeners2[i]);
	        }
		}else if(com instanceof KDFormattedTextField){
			//金额
			DataChangeListener[] listeners = com.getListeners(DataChangeListener.class);
			for(int i=0;i<listeners.length;i++){
				((KDFormattedTextField)com).removeDataChangeLis

单据开发-业务单据Edit界面代码中篇(GUI端)

关注公众号获取更多金蝶EAS开发方面的内容因论坛版权要求,部分图片无法显示,可以直接方位微信公众号链接https://mp.weixin.qq.com/s/PkKr...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信