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楼正解。。。