我想对单元格改变进行监听,来实现历史记录,用了JDK上的方法但是存在问题
table.getModel().addTableModelListener(new MyTableModelListener());MyTableModelListener内容: public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel)e.getSource();
String columnName = model.getColumnName(column);
Object data = model.getValueAt(row, column); ...// Do something with the data...
}问题在于只要单元格的值发生变化,MyTableModelListener就会监听到,但是单元格的值发生变化有2种情况:一是我双击单元格,编辑完后选定别的格退出编辑状态时产生TableModelEvent,这也是我想要监听的事件,二是我其他的地方用了些button,按button时会改Table的内容,这时也产生了TableModelEvent
我要怎么样才能区分这2总情况,只对第一总情况进行处理?
table.getModel().addTableModelListener(new MyTableModelListener());MyTableModelListener内容: public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel)e.getSource();
String columnName = model.getColumnName(column);
Object data = model.getValueAt(row, column); ...// Do something with the data...
}问题在于只要单元格的值发生变化,MyTableModelListener就会监听到,但是单元格的值发生变化有2种情况:一是我双击单元格,编辑完后选定别的格退出编辑状态时产生TableModelEvent,这也是我想要监听的事件,二是我其他的地方用了些button,按button时会改Table的内容,这时也产生了TableModelEvent
我要怎么样才能区分这2总情况,只对第一总情况进行处理?
TableCellEditor editor = table.getDefaultEditor(Class<?>);
editor.addCellEditorListener(
new CellEditorListener() {
public void editingCanceled(ChangeEvent e){
...
}
public void editingStopped(ChangeEvent e){
...
}
});
public void editingCanceled(ChangeEvent e){
System.out.println("aaaa");
}
public void editingStopped(ChangeEvent e){
System.out.println("bbbb");
}当编辑完后,如果单元格里还有字会打印一遍"bbbb",如果单元格里没有字了会打印两遍"bbbb"!但是"aaaa"打印不出来.
点按钮-》变量为1-》改变Table-》触发监听代码-》判断变量,为1就不执行后续代码-》变量改回为0