Professional Documents
Culture Documents
Observer and JTable
Observer and JTable
Model-View Separation
1. Keep model (data) code as separate as possible from view (gui) code
2. View knows about model, but model doesnt (explicitly) know about view.
class CatalogApplet
{
public CourseList courseList;
public onEvent(..)
{
// gather data
// modify model (e.g., courseList)
// update view
}
class CourseList
{
// no reference to applet
Reason we can easily port model to a different GUI
Sometimes we have multiple views of model
Catalogs courseList appears in CatalogView and SchedulerView
If model is updated, need to notify all views.
But Model isnt supposed to know about view???
Observer Pattern (see Gamma p. 293)
AbstractTableModel
(Data)
TableModelListeners
AbstractTableModel
JTable
ModifyData()
fireTableDataChanged()
tableChanged()
getRowCount()
getColumnCount()
getValueAt(row,col)
}
class ConcreteObserver implements Observer
{
public void update()
{ // get some data from model, redraw self}
}
Note that Model isnt coupled with any concrete observers, so portability not a
problem.