选择事件

选择事件是在选择块发生变化后发出。
table.addKDTSelectListener(new KDTSelectListener()
{
    public void tableSelectChanged(KDTSelectEvent e){
    // 获取上一个选择块
    KDTSelectBlock sbPrev = e.getPrevSelectBlock();
    // 获取当前选择块
    KDTSelectBlock sbCurr = e.getSelectBlock();
    // ...do something
    }
});

鼠标单击双击事件

单击事件是在鼠标单击某个单元格后发出。
双击事件是在鼠标双击某个单元格后发出。
table.addKDTMouseListener(new KDTMouseListener()
{
    public void tableClicked(KDTMouseEvent e)
{
    // 单击
        if (e.getClickCount() == 1)
{
            // ...do something
        }
        // 双击
        else if (e.getClickCount() == 2)
        {
            // ...do something
}
    }
});

激活单元即指当前处于准备进入编辑状态的单元。
激活单元变化事件是在激活单元发生变化后发出。
添加激活单元变化事件侦听者
table.addKDTActiveCellListener(new KDTActiveCellListener()
{
    public void activeCellChanged(KDTActiveCellEvent e)
{
    // 获取上一个激活单元的行列索引
        int prevRow = e.getPrevRowIndex();
        int prevCol = e.getPrevColumnIndex();
        // 获取当前激活单元的行列索引
        int currRow = e.getRowIndex();
        int currCol = e.getColumnIndex();
        // ...do something
    }
});

编辑事件

编辑事件KDTEditListener包括以下几个方法:
editStarting 编辑器启动中,在编辑器启动之前发出,通过设置返回值可以取消启动编辑器。
editStarted 编辑启动后,在编辑启动之后发出。
editValueChanged 编辑器值变化,在编辑器的值发生变化后发出。
editStopping 编辑器结束中,在编辑器结束之前发出,通过设置返回值可以取消结束编辑器。
editStopped 编辑器结束后,在编辑器结束之后发出。
KDTEditListener提供了适配器KDTEditAdapter
// 示例
table.addKDTEditListener(new KDTEditAdapter()
{
    // 编辑器启动前
    public void editStarting(KDTEditEvent e)
  {
        System.out.println("editStarting");
        // 如果当前行是第三行,将取消编辑
        if (e.getRowIndex() == 3)
            e.setCancel(true);
    }
    
    // 编辑启动后
    public void editStarted(KDTEditEvent e)
  {
        System.out.println("editStarted");
    // 如果当前单元处于第4行第0列,并且单元值为字符串,则在字符串前加上$符
    if ((e.getRowIndex() == 4) && (e.getColIndex() == 0))
    {
            KDTable tbl = (KDTable)e.getSource();
            Object value =tbl.getEditManager().getEditor().getValue();
            if (value instanceof String)
tbl.getEditManager().getEditor().setValue("$" + value.toString());
        }
    }
    
    // 编辑器值变化(注意:此时编辑器还未结束,KDTable实际上是转发编辑器的
   // change事件)
    public void editValueChanged(KDTEditEvent e){
        System.out.println("editValueChanged");
    }
    
    // 编辑器结束前
    public void editStopping(KDTEditEvent e)
{
        System.out.println("editStopping");
        //如果当前单元处于第4行第0列,则在退出前将$符去掉
        if ((e.getRowIndex() == 4) && (e.getColIndex() == 0))
{
            KDTable tbl = (KDTable)e.getSource();
            String value = (String)tbl.getEditManager().getEditor().getValue();
            // 如果单元格的值长度小于5,则不允许退出编辑状态
            if (value.length() < 5)
                e.setCancel(true);
            // 否则,取得$符并退出编辑
else
    tbl.getEditManager().getEditor().setValue(value.substring(1, value.length()));
        }
    }
    
    // 编辑结束后
    public void editStopped(KDTEditEvent e) {
        System.out.println("editStopped");
    }
});

BeforeActionListener事件

这个事件在table增删行列以及copy、paste、cut时触发,通过设置事件参数的返回值可以取消相应的动作。
// 给table设置action
table.setBeforeAction(new TableBeforeAction());
// action的实现
    class TableBeforeAction implements BeforeActionListener
    {       
        /**
         *@see com.kingdee.bos.ctrl.kdf.table.event.BeforeActionListener#beforeAction(com.kingdee.bos.ctrl.kdf.table.event.BeforeActionEvent)
         */
        public void beforeAction(BeforeActionEvent e)
        {
            // 添加行
            if (e.getType() == BeforeActionEvent.ACTION_ADD_ROW)
            {
                // 获取插入行的位置
                int rowIndex = ((Integer)e.getParameter()).intValue();
                
                if (rowIndex > 5)
                {
                    WindowUtil.msgboxInfo("不能添加行", "title", table);
                    
                    // 取消动作
                    e.setCancel(true);
                }
            }
            // 添加列
            else if (e.getType() == BeforeActionEvent.ACTION_ADD_COLUMN)
            {
                int colIndex = ((Integer)e.getParameter()).intValue();
                
                if (colIndex > 3)
                {
                    WindowUtil.msgboxInfo("不能添加列", "title", table);
                    
                    // 取消动作
                    e.setCancel(true);
                }
            }
            // paste
            else if (e.getType() == BeforeActionEvent.ACTION_PASTE)
            {
                // 获取paste的项
                int mark = ((Integer)e.getParameter()).intValue();
                
                // 如果paste项中包含userObject,则
                if (KDTEditHelper.isUserObject(mark))
                {
                    WindowUtil.msgboxInfo("paste", "title", table);
                    
                    // paste除userObject外的内容
                    table.getEditHelper().paste(KDTEditHelper.STYLE | KDTEditHelper.VALUE | KDTEditHelper.FORMULA);
                    // 取消动作
                    e.setCancel(true);
                }
            }
            // cut
            else if (e.getType() == BeforeActionEvent.ACTION_CUT)
            {
                // 获取cut的项
                int mark = ((Integer)e.getParameter()).intValue();
                
                // 如果cut项中包含userObject,则
                if (KDTEditHelper.isUserObject(mark))
                {
                    WindowUtil.msgboxInfo("cut", "title", table);
                    
                    // cut除userObject外的内容
                    table.getEditHelper().paste(KDTEditHelper.STYLE | KDTEditHelper.VALUE | KDTEditHelper.FORMULA);
                    
                    // 取消动作
                    e.setCancel(true);
                }
            }
        }
       }

eas之事件的更多相关文章

  1. JNI详解---从不懂到理解

    转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...

  2. eas中删除原来的监听事件添加新的监听事件

    kdtEntrys.removeKDTEditListener(kdtEntrys.getListeners(KDTEditListener.class)[0]);  kdtEntrys.addKDT ...

  3. JQuery事件机制

    1 事件操作 1.1 页面载入事件 $(document).ready(function(){ // 在这里写你的代码... }); 或者 $(function($) { // 你可以在这里继续使用$ ...

  4. Jquery的点击事件,三句代码完成全选事件

    先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  5. 关于 Chrome 浏览器中 onresize 事件的 Bug

    我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 ...

  6. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  7. C++中的事件分发

    本文意在展现一个C++实现的通用事件分发系统,能够灵活的处理各种事件.对于事件处理函数的注册,希望既能注册到普通函数,注册到事件处理类,也能注册到任意类的成员函数.这样在游戏客户端的逻辑处理中,可以非 ...

  8. 移动端IOS点击事件失效解决方案

    解决方案 解决办法有 4 种可供选择: 1 将 click 事件直接绑定到目标元素(即 .target)上 2 将目标元素换成 <a> 或者 button 等可点击的元素 3 将 clic ...

  9. Android笔记——Button点击事件几种写法

    Button点击事件:大概可以分为以下几种: 匿名内部类 定义内部类,实现OnClickListener接口 定义的构造方法 用Activity实现OnClickListener接口 指定Button ...

随机推荐

  1. Spring MVC中<mvc:annotation-driven />和<context:annotation-config />的区别分析

    个人最简单的使用理解: <mvc:annotation-driven />是管理静态资源的,比如静态页面,返回JSON这些. <context:annotation-config / ...

  2. 一个神奇的PHP框架:Phalcon 之初识

    前言 公司的APP响应速度比较慢,公司大神决定使用C语言编写的PHP框架Phalcon 代替原来的框架,响应速度有比较大的提升.以前只是听说过,没有深入的了解过.即然工作中有用到,便花点时间了解了下, ...

  3. [MongoDB]安装 MongoDB 数据库

    1.tar zxvf mongodb.tgz 2.vim ~/.bashrc  增加 MONGODB_HOME 并添加bin到PATH ,source ~/.bashrc 3.mongod -vers ...

  4. HDU 5293

    树上DP题. 其实有点类似于01的问题.方程很容易想到.首先,因为一条链的节点其实都是在树上的,所以很容易想到应该先求一个LCA.然后,当某节点不是链的LCA时,它的转移就是: dp[i]=sum[i ...

  5. javascript打开本地应用

    function openShell(){ if(window.ActiveXObject){ var cmd = new ActiveXObject('WScript.Shell') cmd.Run ...

  6. java电影站点开发经验3

    上次讲到了.站点有资源了.可是必需要点缀下站点,要不光有资源比較空的.最開始就是想到了给资源加入评论功能的.然后自己就向开发个评论功能. 可是由于时间问题,并且本人也比較懒,就想在网上找找解决方式.嘻 ...

  7. [BZOJ 1718] Redundant Paths

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1718 [算法] 用Tarjan算法找出所有e-DCC(边-双联通分量),然后将这张图 ...

  8. Tool-Java:Spring Tool Suite

    ylbtech-Tool-Java:Spring Tool Suite Spring Tool Suite 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. ...

  9. 什么是 less? 如何使用 less?

    什么是 Less? Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).嵌套.函数等功能,让 CSS 更易编写.维护等. 本质上,Less 包含一套自定义 ...

  10. C# 取两位小数

    double s=0.55555;result=s.ToString("#0.00");//点后面几个0就保留几位 如果要四舍五入的话,用这个double dbdata = 0.5 ...