import java.util.*; import java.awt.*; import javax.swing.*; import javax.swing.border.*; public class TextView extends JPanel implements Observer { /** * The Model (Account) we are observing */ private Model model; /** * Our widget that we need to remember */ private JTextField textField; public TextView (Model model) { // Stash arg this.model = model; // Sign us up as Observer model.addObserver (this); // 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) { textField.setText (String.valueOf (model.getBalance ())); } }