zoukankan      html  css  js  c++  java
  • 转:JTable添加单元格改变事件

    在使用Jtable得时候,当然是我自己在使用得时候,查了下API没有发现如何监听某个单元格得值是否被修改过了,如果那位仁兄知道怎么直接添加监听还望多多指教。

                    

                      JTable得单元格(cell)在渲染得时候使用得是默认得DefaultTableCellRenderer。其返回的Component是继承了 JLabel得组件,所以直接使用默认得渲染器对其内容的更改显得力不从心。其监听主要在他得CellEditor上面JTable使用的默认得编辑器为 JTextField,这样你就可以重新添加编辑器即继承DefaultCellEditor然后给其添加一定得监听事件后在对jtable添加编辑器, 单这样做我感觉过于过于繁琐。在单元格进行编辑的时候会触发TablechangEvent 事件,Tablechange事件提供了几种触发事件得类型主要分为:

                 1.insert

                 2.update

                 3.delete

                  如果要对其某个单元格得内容是否真得发生了更改得话只有选择update类型,但其监听得事件是在你双击进入编辑状态后不管有没有对数据进行更改都会触发 此事件。如果我们能获得进入编辑状态前和编辑状态完成后得内容是很容易确定其内容是否真得进行过更改得。

               首先对Jtable添加TableModelListener方法如下

        

         JTable t = new JTable();

         String oldvalue = null;//定义全局变量用于记录编辑前得内容

           t.getModel().addTableModelListener(new TableModelListener(){

       public void tableChanged(TableModelEvent e) {
         if(e.getType() == TableModelEvent.UPDATE){
          /*
           * do some thing 获得编辑后单元格得值
           */

            String newvalue = t.getValueAt(e.getLastRow(),e.getColumn()).toString();

            if(!newvalue.equals(oldvalue)){

              

           /*
            * call the value changed metod;

            */

              }


         }
        
       }
            
           });

         这样就可以对其是否进入过编辑状态有了监听,然后在给其添加mouselistener就可以对其进去编辑状态前得情况进行记录

        t.addMouseListener(new MouseAdapter(){

             public void mouseClicked(MouseEvent e){

               //记录进入编辑状态前单元格得数据

                  oldvalue = t.getValueAt(t.getSelectedRow(),t.getSelectedColumn()).toString();

                 }     

             });

     

     

    另参考:http://blog.sina.com.cn/s/blog_63e95ee70100nz1p.html

  • 相关阅读:
    GIF文件转换为头文件工具
    深夜杂想
    swift项目第十天:网络请求工具类的封装
    swift项目第九天:正则表达式的学习
    swift项目第八天:自定义转场动画以及设置titleView的状态
    swift项目第七天:构建访客界面以及监听按钮点击
    swift项目第六天:中间发布按钮的封装以及监听点击事件
    swift项目第五天:swift中storyBoard Reference搭建主界面
    swift项目第四天:动态加载控制器
    swift项目第三天:手写代码搭建主框架
  • 原文地址:https://www.cnblogs.com/youxin/p/2798893.html
Copyright © 2011-2022 走看看