package vn.edu.rmit.examples.complex; import java.awt.Label; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Observer; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public abstract class TemperatureView implements Observer { private int h; private int v; private String label; private TemperatureModel model; private JFrame temperatureFrame; private JTextField display = new JTextField(); private JButton upButton = new JButton("Raise"); private JButton downButton = new JButton("Lower"); public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public TemperatureModel getModel() { return model; } public void setModel(TemperatureModel model) { this.model = model; } public TemperatureView() {} public TemperatureView(String label, int h, int v) { this.label = label; this.h = h; this.v = v; } public void init() { temperatureFrame = new JFrame(label); temperatureFrame.add("North", new Label(label)); temperatureFrame.add("Center", display); JPanel buttons = new JPanel(); buttons.add(upButton); buttons.add(downButton); temperatureFrame.add("South", buttons); temperatureFrame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { e.getWindow().setVisible(false); System.exit(0); } }); model.addObserver(this); // Connect the View to the Model temperatureFrame.setSize(200,100); temperatureFrame.setLocation(h, v); temperatureFrame.setVisible(true); } public void setDisplay(String s){ display.setText(s);} public double getDisplay() { double result = 0.0; try{ result = Double.valueOf(display.getText()).doubleValue(); } catch (NumberFormatException e){ e.printStackTrace(); } return result; } public void addDisplayListener(ActionListener a){ display.addActionListener(a);} public void addUpListener(ActionListener a){ upButton.addActionListener(a);} public void addDownListener(ActionListener a){ downButton.addActionListener(a);} }