package vn.edu.rmit.examples.complex; import java.awt.Canvas; import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Observable; import java.util.Observer; import javax.swing.JFrame; import javax.swing.JPanel; public class ThermView extends JFrame implements Observer{ private TemperatureModel model; private Canvas canvas; private TempGauge gauge; public TemperatureModel getModel() { return model; } public void setModel(TemperatureModel model) { this.model = model; } public Canvas getCanvas() { return canvas; } public void setCanvas(Canvas canvas) { this.canvas = canvas; } public TempGauge getGauge() { return gauge; } public void setGauge(TempGauge gauge) { this.gauge = gauge; } public ThermView() {} public ThermView(TemperatureModel model, int h, int v) { super("Temperature Gauge"); } public void init() { JPanel Top = new JPanel(); add("North", Top); canvas.setSize(500,280); add("Center", canvas); setSize(280, 280); setVisible(true); model.addObserver(this); // Connect to the model this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { e.getWindow().setVisible(false); System.exit(0); } }); } // Respond to changes public void update(Observable obs, Object o) { repaint(); } public void paint(Graphics g) { int farenheit = (int)model.getF(); // Use the current data to paint gauge.set(farenheit); canvas.repaint(); super.paint(g); } }