import java.io.*; import java.beans.*; public class Multiplier implements Serializable { private double a, b, result; synchronized public void setA(double newA) { a = newA; multiply(); } synchronized public double getA() { return a; } synchronized public void setB(double newB) { b = newB; multiply(); } synchronized public double getB() { return b; } synchronized public void setResult(double d) { multiply(); } synchronized public double getResult() { return result; } private void multiply(){ double oldRes = result; result = a * b; //registrera det nya resultatet propChanges.firePropertyChange("result", new Double(oldRes), new Double(result)); } //skapa stöd för att avlyssna egenskapsförändring private PropertyChangeSupport propChanges = new PropertyChangeSupport(this); //metod som lägger till lyssnare public void addPropertyChangeListener(PropertyChangeListener listener) { propChanges.addPropertyChangeListener(listener); } //metod som tar bort lyssnare public void removePropertyChangeListener(PropertyChangeListener listener) { propChanges.removePropertyChangeListener(listener); } }