Latest Tutorials| Questions and Answers|Ask Questions?|Site Map



Home Java Example Java Swing Bouncing Thread Example

Related Tutorials


 
 

Share on Google+Share on Google+

Bouncing Thread Example

Advertisement
In this section, we are going to develop a small Java Graphics application that creates a ball which bounce with the help of thread in Graphics.

Bouncing Thread Example

     

In this section, we are going to develop a small Java Graphics application that creates a ball which bounce with the help of thread in Graphics.

In the example, a method contentPane() is defined that contains the canvas in the center of the frame. Two Radio Buttons Start and Stop are defined in the panel. On pushing the button 'Start', class ActionListener is called and the ball starts bouncing. On pushing 'Stop', ActionListener is called and the frame will get close. 

The contentPane.add(panel, "North") gives the position to the panel of the buttons on the frame. The dimensions for the ball are defined. The shape of the ball is given by graphics.fillOval(p, q, P, Q).

Here is the code of BounceThreadExample

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

public class BounceThreadExample {
  public static void main(String[] args) {
  JFrame frame = new BounceThread();
  frame.show();
  }
}
class BounceThread extends JFrame {
  private JPanel canvas;
  public BounceThread() {
  setSize(300200);
  setTitle("Bounce Ball");

  Container container = getContentPane();
  canvas = new JPanel();
  container.add(canvas, "Center");
  JPanel panel = new JPanel();
  add(panel, "Start"new ActionListener() {
  public void actionPerformed(ActionEvent evt) {
  Ball ball = new Ball(canvas);
  ball.start();
  }
  });
 add(panel, "Stop"new ActionListener() {
 public void actionPerformed(ActionEvent evt) {
 canvas.setVisible(false);
 System.exit(0);
  }
  });
 container.add(panel, "North");
  }
  public void add(Container container, String title, ActionListener 
  listener) {

 JRadioButton button = new JRadioButton(title);
 container.add(button);
 button.addActionListener(listener);
  }
}
class Ball extends Thread {
 JPanel box;
 int P = 12, Q = 12, p = 0, q = 0, dp = 3, dq = 3;
  public Ball(JPanel pan) {
  box = pan;
  }
public void draw() {
  Graphics g = box.getGraphics();
  g.fillOval(p, q, P, Q);
  g.dispose();
  }
 public void move() {
  if (!box.isVisible())
  return;
  Graphics g = box.getGraphics();
  g.setXORMode(box.getBackground());
  g.fillOval(p, q, P, Q);
  p += dp;
  q += dq;
  Dimension d = box.getSize();
  if (p < 0) {
 p = 0;
  dp = -dp;
  }
  if (p + P >= d.width) {
  p = d.width - P;
  dp = -dp;
  }
  if (q < 0) {
  q = 0;
  dq = -dq;
  }
  if (q + Q >= d.height) {
  q = d.height - Q;
  dq = -dq;
  }
  g.fillOval(p, q, P, Q);
  g.dispose();
  }

  public void run() {
  try {
  draw();
  for (int i = 1; i <= 800; i++) {
  move();
  sleep(5);
  }
  catch (Exception e) {
  }
  }
}

After pushing the start button, ball starts bounce

Download Source Code

 

Advertisements

If you enjoyed this post then why not add us on Google+? Add us to your Circles



Liked it!  Share this Tutorial


Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Posted on: December 15, 2008

Related Tutorials

Discuss: Bouncing Thread Example  

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments:1
Bansari
February 18, 2013
Problem with code

Hi, I tied to run this code but it gives me error could not find or load main class, please help
DMCA.com