Home Segments Top Top Previous Next

1011: Mainline

Of course, if you allow cell editing, you presumably want a listener to take note of that editing. The following illustrates the view side of such a listener. Nothing happens on the model side; the listener only prints edited value. The listener is a stub, just as the listener defined in Segment 1007 is a stub.

The listener implements the TableModelListener interface, which imposes the definition of tableChanged, which is called by the machinery that watches for editing events. The table-model event supplies information about the change, identified by the getFirstRow and getColumn methods. There is also a getLastRow method, but when you edit individual cells, the first row and the last row are the same.

import javax.swing.event.*; 
import javax.swing.table.*; 
public class MovieTableCellListener implements TableModelListener { 
 MovieTableApplication application; 
 public MovieTableCellListener (MovieTableApplication a) { 
  application = a; 
 } 
 public void tableChanged (TableModelEvent e) { 
  int row = e.getFirstRow(); 
  int column = e.getColumn(); 
  if (row < 0 || column < 0) {return;} 
  TableModel model = application.getRatingTable().getModel(); 
  Object o = model.getValueAt(row, column); 
  System.out.println("Edited value is " + o + " of " + o.getClass()); 
 } 
}