import java.util.Observable; import java.util.Observer; import javax.swing.JFrame; import javax.swing.JTextField; public class ObserverClass { public static void main(String[] args) { new Erzaehler(); } } class Erzaehler extends Observable { public Erzaehler(){ this.addObserver(new Zuhoerer_1()); this.addObserver(new Zuhoerer_2()); tell("hoihoi!"); } public void tell(String info){ if(countObservers()>0){ setChanged(); notifyObservers(info); } } } class Zuhoerer_1 implements Observer{ private JTextField field1; public Zuhoerer_1(){ JFrame frame = new JFrame("Zuhoerer 1"); field1 = new JTextField("a"); frame.add(field1); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 50); frame.setLocation(400, 400); frame.setVisible(true); } public void update(Observable o, Object arg) { field1.setText((String) arg); } } class Zuhoerer_2 implements Observer{ private JTextField field2; public Zuhoerer_2(){ JFrame frame = new JFrame("Zuhoerer 2"); field2 = new JTextField("b"); frame.add(field2); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 50); frame.setLocationRelativeTo(null); frame.setVisible(true); } public void update(Observable o, Object arg) { field2.setText((String) arg); } }