public class Watch2Windows extends JxFrame
1: import java.awt.event.*;
2: import javax.swing.*;
3: import javax.swing.event.*;
4: import javax.swing.text.*;
5: import javax.swing.border.*;
6: import javax.accessibility.*;
7:
8: import java.awt.*;
9: import java.awt.event.*;
10: import java.util.*;
11: import java.io.*;
12: import java.applet.*;
13: import java.net.*;
14:
15: public class Watch2Windows extends JxFrame
16: implements ActionListener, ItemListener, Subject {
17: private JButton Close;
18: private JRadioButton red, green, blue;
19: private Vector observers;
20: private ColorFrame cframe;
21: private ListFrame lframe;
22: //------------------------------------------
23: public Watch2Windows() {
24: super("Change 2 other frames");
25: observers = new Vector(); //list of observing frames
26:
27: JPanel p = new JPanel(true); //add panel to content pane
28: p.setLayout(new BorderLayout());
29: getContentPane().add("Center", p);
30:
31: Box box = new Box(BoxLayout.Y_AXIS); //vertical box layout
32: p.add("Center", box);
33: box.add(red = new JRadioButton("Red")); //and 3 radio buttons
34: box.add(green = new JRadioButton("Green"));
35: box.add(blue = new JRadioButton("Blue"));
36:
37: blue.addItemListener(this); //listen for clicks
38: red.addItemListener(this); //on radion buttons
39: green.addItemListener(this);
40:
41: //make all part of same button group
42: ButtonGroup bgr = new ButtonGroup();
43: bgr.add(red);
44: bgr.add(green);
45: bgr.add(blue);
46:
47: //put a Close button at the bottom of the frame
48: JPanel p1 = new JPanel();
49: p.add("South", p1);
50: p1.add( Close =new JButton("Close"));
51: Close.addActionListener(this); //listen for clicks on it
52: setBounds(200, 200, 200, 200);
53: pack();
54: //---------create observers---------
55: cframe = new ColorFrame(this);
56: lframe = new ListFrame(this);
57: setVisible(true);
58: }
59: //-----------------------------------------
60: public void itemStateChanged(ItemEvent e) {
61: //responds to radio button clicks
62: //if the button is selected
63: if (e.getStateChange() == ItemEvent.SELECTED)
64: notifyObservers((JRadioButton)e.getSource());
65: }
66: //-----------------------------------------
67: private void notifyObservers(JRadioButton rad) {
68: //sends text of selected button to all observers
69: String color = rad.getText();
70: for (int i=0; i< observers.size(); i++) {
71: ((Observer)(observers.elementAt(i))).sendNotify(color);
72: }
73: }
74: //-----------------------------------------
75: public void registerInterest(Observer obs) {
76: //adds observer to list
77: observers.addElement(obs);
78: }
79: //-----------------------------------------
80: public void actionPerformed(ActionEvent e) {
81: //responds to close button
82: Object obj = e.getSource();
83: if (obj == Close)
84: System.exit(0);
85: }
86: //-----------------------------------------
87: static public void main(String[] argv) {
88: new Watch2Windows();
89: }
90: }
91:
92:
93:
94: