当前位置: 代码迷 >> J2SE >> 急 Swing监听器解决办法
  详细解决方案

急 Swing监听器解决办法

热度:95   发布时间:2016-04-23 20:08:03.0
急!!! Swing监听器
JTable的添加和删除数据的监听器,添加数据时会调用addTableModelListener,但删除数据时不会调用removeTableModelListener,不知道为什么

//删除表数据
jTableyimiao.getModel().addTableModelListener(new TableModelListener() {
            @Override
            public void tableChanged(TableModelEvent e) {
                int rows = jTableyimiao.getRowCount();
                total = 0;

                for (int i = 0; i < rows; i++) {
                    if (!(("" + jTableyimiao.getValueAt(i, 16)).equals(""))) {
                        total += Double.parseDouble("" + jTableyimiao.getValueAt(i, 16));
                    }
                }
                totalPrice.setText(total + "元");
            }

        });
       
        //删除表数据
        jTableyimiao.getModel().removeTableModelListener(new TableModelListener() {
            @Override
            public void tableChanged(TableModelEvent e) {
                int rows = jTableyimiao.getRowCount();
                total = 0;

                for (int i = 0; i < rows; i++) {
                    if (!(("" + jTableyimiao.getValueAt(i, 16)).equals(""))) {
                        total += Double.parseDouble("" + jTableyimiao.getValueAt(i, 16));
                    }
                }
                totalPrice.setText(total + "元");
            }

        });

------解决思路----------------------
应该在这个上面removeTableModelListener 。不知道你remove的事件是什么,你换其他的看看 
------解决思路----------------------
如果是在找不到,建议在执行删除的方法里面重新计数,让后set到swing上面
------解决思路----------------------
你对这两个方法的理解错了,addTableModelListener是给TableModel添加一个监听器,用来监听TableModel的change事件(添加、删除都有),removeTableModelListener 是指移除已经添加的监听器,代码的下半部分是多余的,添加、删除都应该走到上半部分的代码的。
------解决思路----------------------
3楼正解。。。
  相关解决方案