Source of Watch2Windows.java


  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: