MVC: TextView.java

import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class TextView extends JPanel implements Observer { //*1 Interface class
    /**
     * The Model (Account) we are observing
     */
    private Model model; //*2 We know model, but not vice versa

    /**
     * Our widget that we need to remember
     */
    private JTextField textField;

    public TextView (Model model) {
	// Stash arg
	this.model = model; //*2

	// Sign us up as Observer
	model.addObserver (this); //*3 We are Observer of our model

	// Set up our JPanel
	setBorder (new TitledBorder ("View"));

	// Label
	add (new JLabel ("Balance:"));

	// Text field to display amount
	textField = new JTextField (10);
	textField.setEditable (false);
	add (textField);

	// Force an initial update(), args are ignored anyway
	update (null, null);
    }

    /**
     * This will be called by our Model
     */
    public void update (Observable observable, Object object) { //*4 Catch update
	textField.setText (String.valueOf (model.getBalance ())); //*5 Then query model for data
    }
}
[download file]