![]() |
![]() |
![]() |
![]() |
![]() |
|
With the new locally defined observer
and modified setter installed, you have the following definition of
MovieApplication.
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class MovieApplication extends JFrame {
public static void main (String argv []) {
new MovieApplication("Movie Application");
}
// Declare instance variables:
private Meter meter;
private Movie movie;
// Define constructor
public MovieApplication(String title) {
super(title);
// Create model
getMovie();
// Create and connect view to application
getContentPane().add("Center", getMeter());
// Connect window listener, size and show
addWindowListener(new LocalWindowListener());
setSize(300, 100); show();
}
// Define getters and setters
public Meter getMeter () {
if (meter == null) {setMeter(new Meter(0, 30));}
return meter;
}
public Movie getMovie () {
if(movie == null) {setMovie(new Movie (10, 10, 10, "On to Java"));}
return movie;
}
public void setMeter (Meter m) {meter = m;}
public void setMovie (Movie m) {
if(movie == m) {return;}
if(movie instanceof Movie) {movie.deleteObservers();}
if(m instanceof Movie) {
movie = m;
movie.addObserver(new LocalMovieObserver());
movie.changed();
}}
// Define observer:
private class LocalMovieObserver implements Observer {
public void update (Observable observable, Object object) {
getMeter().setValue(getMovie().rating());
getMeter().setTitle(getMovie().getTitle());
}}
// Define window adapter as in Segment 772
}