/*
   Chapter 6.2:   Java Telephone
   Programmer:    Brad Shedd
   Date:          July 17, 2006
   Filename:      Telephone.java
   Purpose:       This Program creates a telephone keypad.
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;

public class Telephone extends Frame implements ActionListener
{
  
private Button keys[];
  
private Panel keypad;
  
private TextField lcd;
  
private Label lbl;
  
private boolean foundKey;

  
public Telephone()
   {

     
//construct components and initialize beginning values
      lcd = new TextField (20);
         lcd.setEditable(
false);
      keypad =
new Panel();
      keys =
new Button[12];
      lbl =
new Label("Click each button above to dial your number");

     
//background color
      setBackground(Color.magenta);

     
//construct and assing captions to the Buttons
      for(int i=0; i<=9; i++)
         keys[i] =
new Button(String.valueOf(i));

     keys[10] =
new Button("*");
      keys[11] =
new Button("#");

     
//set Frame and keypad layout to grid layout
      setLayout(new BorderLayout());
      keypad.setLayout(
new GridLayout(4,3,10,10));

     
for (int i=1; i<=3; i++) // 1,2,3
         keypad.add(keys[i]);

     
for (int i=4; i<=6; i++) //4, 5, 6
         keypad.add(keys[i]);

     
for (int i=7; i<=9; i++) //1, 2, 3
         keypad.add(keys[i]);

      keypad.add(keys[10]);
// *

      keypad.add(keys[0]); // 0key

      keypad.add(keys[11]); // #

      for (int i=0; i<keys.length; i++)
         keys[i].addActionListener(
this);

      add(lcd, BorderLayout.NORTH);
      add(keypad, BorderLayout.CENTER);
      add(lbl, BorderLayout.SOUTH);

      addWindowListener(
        
new WindowAdapter()
            {
           
public void windowClosing(WindowEvent e)
               {
                  System.exit(0);
               }
            }
      );

   }
// end of constructor method

   public void actionPerformed(ActionEvent e)
   {
  
//test for button clicks
         foundKey = false;

        
//search for the clicked key
         for (int i=0; i<keys.length && !foundKey; i++)
         {
           
if(e.getSource() == keys[i])
            {
               foundKey=
true;
              
switch(i)
               {
                 
// keys
                  case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11:
                     lcd.setText(lcd.getText() + keys[i].getLabel());
                    
break;
               }
//end switch
            } //end if
         }
   }
//end actionperformed
   public static void main(String args[])
      {
        
// set frame properties
         Telephone f = new Telephone();
         f.setTitle(
"Telephone");
         f.setBounds(50,130,250,300);
         f.setVisible(
true);
      }
//end main
}// end class

Homepage