This week's book giveaways are in the Java EE and JavaScript forums.
We're giving away four copies each of The Java EE 7 Tutorial Volume 1 or Volume 2(winners choice) and jQuery UI in Action and have the authors on-line!
See this thread and this one for details.
The moose likes Swing / AWT / SWT and the fly likes Help needed with the Code Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of The Java EE 7 Tutorial Volume 1 or Volume 2 this week in the Java EE forum
or jQuery UI in Action in the JavaScript forum!
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Help needed with the Code" Watch "Help needed with the Code" New topic
Author

Help needed with the Code

kartik rathore
Greenhorn

Joined: Oct 18, 2008
Posts: 14
hi i am trying to make a bouncing ball program and have written the code for it which is below. i seem to have some problem with it

anybody help ???

the problem is i dnt seem to have the ball moving.

help please

code is as folllows ............


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Ellipse2D;
import javax.swing.JFrame;
import javax.swing.JPanel;



public class Ball extends JFrame
{
private double x=2; // initial x axis
private double y=2; // initial y axis
private double width=16; // width
private double height=16; // height
private JPanel p;
private Color black;
private double dx=2; // incrfementing x by 2
private double dy=2; // incrementing y by 2

public Ball() throws InterruptedException
{
super();
setSize(450,450);
p=new JPanel();
p.setSize(400, 400);
p.setBounds(100, 100, 350, 350);
add(p,BorderLayout.CENTER);

for(int i=0;i<1000;i++)
{
move(p.getBounds());
p.setBounds(100, 100, 350, 350);
p.paintComponents(p.getGraphics());
Thread.sleep(10);
}
}

public static void main(String[] args) throws InterruptedException {
Ball f = new Ball();
f.show();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}

public void move(Rectangle bounds)
{


if(x<bounds.getMinX())
{
x=bounds.getMinX();
x+=dx; // incrementing the x axis
}
if(x>bounds.getMaxX())
{
x=bounds.getMaxX()-width;
x-=dx;
}
// within quadrants
if((x>bounds.getMinX()) && (x<bounds.getMaxX()))
{
// for quadrant 1 and quadrant 2
if((x<bounds.getCenterX()) && (x>bounds.getMinX()))
{
if((y>bounds.getMinY()) && (y<bounds.getCenterY()))
{
x-=dx;
}
if((y>bounds.getCenterY()) && (y<bounds.getMaxY()))
{
x+=dx;
}
}
// for quadrant 3 and 4
if((x>bounds.getCenterX()) && (x<bounds.getMaxX()))
{
// quadrant 4
if((y>bounds.getMinY()) && (y<bounds.getCenterY()))
{
x-=dx;
}
// quadrant 3
if((y>bounds.getCenterY()) && (y<bounds.getMaxY()))
{
x+=dx;
}
}
}
//////////////////////////////////////////////////////////
// y axis
////////////////////////////////////////////////////////
if(y<bounds.getMinY())
{
y=bounds.getMinY();
y+=dy; // incrementing the y-axis
}
if(y>bounds.getMaxY())
{
y=bounds.getMaxY()-height;
y-=dy;
}
// within the quadrant ofr y axis
if((y>bounds.getMinY()) && (y<bounds.getMaxY()))
{
// for quadrant 1 and 3
if((y<bounds.getCenterY()) && (y>bounds.getMinY()))
{
// for quadrant 1
if((x>bounds.getMinX()) && (x<bounds.getCenterX()))
{
y+=dy;
}
// for quadrant 3
if((x>bounds.getCenterX()) && (x<bounds.getMaxX()))
{
y-=dx;
}
}
// for quadrant 3 and 4
if((y>bounds.getCenterY()) && (y<bounds.getMaxY()))
{
// quadrant 4
if((x>bounds.getCenterX()) && (x<bounds.getMaxX()))
{
y-=dx;
}
// for quadrant 2
if((x>bounds.getMinX()) && (x<bounds.getCenterX()))
{
y+=dx;
}
}
}
}


public Ellipse2D getshape()
{
return (new Ellipse2D.Double(x, y, width, height));
}
public void paintComponents(Graphics g)
{
Graphics2D g2=(Graphics2D) g;
g2.setColor(Color.BLACK);
g2.fill(getshape());

}


private void setColor(Color BLACK) {
throw new UnsupportedOperationException("Not yet implemented");
}



}
[ October 28, 2008: Message edited by: Bear Bibeault ]
pete stein
Bartender

Joined: Feb 23, 2007
Posts: 1561
Please have a look here:
Ease Up
Use Code Tags
pete stein
Bartender

Joined: Feb 23, 2007
Posts: 1561
Next, you would benefit by reading up on a few things:

1) How to draw graphics in Swing. This often involves overriding the paintComponent method of a JPanel (your panel "p" would do nicely here) and drawing inside of this method using the Graphics object passed to the method by the JVM. You would likely change your ball positions and then call p.repaint() to update the image. There are several excellent tutorials on this in the Sun Swing and Graphics tutorial pages.

2) How to do animation. Simple animations would best be coded using a Swing Timer (javax.swing.Timer). Calling Thread.sleep() on the event dispatch thread as you are doing is only going to be guaranteed to put your whole app to sleep for x seconds (here for 10 seconds).

Good luck!
Craig Wood
Ranch Hand

Joined: Jan 14, 2004
Posts: 1535
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Help needed with the Code