Source of BouncingBall3.java


  1: import java.awt.*;
  2: import java.awt.event.*;
  3: import javax.swing.*;
  4: 
  5: public class BouncingBall3 
  6:         extends java.applet.Applet {
  7:   public BouncingBall3() {
  8:     setLayout(new BorderLayout());
  9:     canvas = new BouncingBallCanvas();
 10:     add("Center", canvas); 
 11:     animator = new Animator(canvas); 
 12:     Dimension d; 
 13:     
 14:     controlPanel = new JPanel(); 
 15:     controlPanel.setLayout(new GridLayout(1,0));     
 16:     JButton startButton = new JButton("start");
 17:     controlPanel.add(startButton);
 18:     JButton stopButton = new JButton("stop");
 19:     controlPanel.add(stopButton);
 20:     JComboBox choice = new JComboBox();
 21:     choice.addItem("red");
 22:     choice.addItem("green");
 23:     choice.addItem("blue");
 24:     controlPanel.add(choice); 
 25:     add("South", controlPanel); 
 26:     
 27:     startButton.addActionListener(new ButtonHandler(ButtonHandler.START_ANIMATION)); 
 28:     stopButton.addActionListener(new ButtonHandler(ButtonHandler.STOP_ANIMATION)); 
 29:     choice.addItemListener(new ColorChoiceHandler());
 30:      
 31:   }
 32:    
 33:   public void init() {
 34:     String att = getParameter("delay");
 35:     if (att != null) { 
 36:       int delay = Integer.parseInt(att);
 37:       animator.setDelay(delay); 
 38:     }
 39:     canvas.initCanvas(); 
 40:   }
 41: 
 42:   public void start() {
 43:     animator.start(); 
 44:   }
 45: 
 46:   public void stop() {
 47:     animator.stop(); 
 48:   }
 49:    
 50:   protected BouncingBallCanvas canvas;
 51:   protected Animator animator; 
 52:   protected JPanel controlPanel; 
 53:   
 54:   protected class ButtonHandler implements ActionListener {  
 55: 
 56:     static final int START_ANIMATION = 1; 
 57:     static final int STOP_ANIMATION = 2; 
 58:       
 59:     public ButtonHandler(int cmd) {
 60:       this.cmd = cmd;     
 61:     }
 62:        
 63:     public void actionPerformed(ActionEvent event) { 
 64:       switch (cmd) { 
 65:       case START_ANIMATION: start(); break; 
 66:       case STOP_ANIMATION: stop(); break; 
 67:       }
 68:     }
 69: 
 70:     protected int cmd;
 71:   }
 72: 
 73:   protected class ColorChoiceHandler implements ItemListener {
 74:     public void itemStateChanged(ItemEvent event)  {    
 75:       JComboBox choice = (JComboBox) event.getSource();  
 76:       if (choice != null) {
 77:         if ("red".equals(event.getItem()))
 78:           canvas.setBallColor(Color.red); 
 79:         else if ("green".equals(event.getItem()))
 80:           canvas.setBallColor(Color.green); 
 81:         else if ("blue".equals(event.getItem()))
 82:           canvas.setBallColor(Color.blue); 
 83:         canvas.repaint();
 84:       }
 85:     }
 86:   }
 87:    
 88: }