I'm 'spose to be making a screen saver-ish program where objects bounce off the walls, but I'm stuck getting multiple objects to show up on the screen at once.
This is my object to make a square:
package movingshape;
import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.*;
import java.util.Random;
public class Shapes extends JPanel implements Runnable
{
Random myR = new Random();
int x_pos;
int y_pos;
int x_width = 62;
int y_height = 60;
int right=5;
int left= -5;
int up=-5;
int down= 5;
int width, height;
boolean goDown, goRight;
public Shapes(int x, int y)
{
x_pos = x;
y_pos = y;
}
// public void init()
// {
//
// }
public void start ()
{
Thread th = new Thread (this);
th.start ();
}
@Override
public void paintComponent( Graphics g )
{
super.paintComponent( g );
g.setColor( Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor( Color.GREEN);
g.fillRect(x_pos, y_pos, x_width, y_height);
}
public void drawBall (int nx, int ny)
{
x_pos= nx;
y_pos= ny;
this.width=this.getWidth();
this.height=this.getHeight();
repaint();
}
public void run ()
{
goRight = true;
goDown = true;
while (true)
{
if(goRight)
{
x_pos += right;
if (x_pos >= (getWidth() - x_width))
goRight = false;
}
else
{
x_pos += left;
if ( x_pos <= 0)
goRight = true;
}
if(goDown)
{
y_pos += down;
if(y_pos >= getHeight()-y_height)
goDown = false;
}
else
{
y_pos += up;
if(y_pos <= 0)
goDown = true;
}
drawBall(x_pos, y_pos);
repaint();
try
{
Thread.sleep (5);
}
catch (InterruptedException ex)
{
// do nothing
}
}
}
}
And this is my code to make the window and add the object:
package movingshape;
import javax.swing.JFrame;
/**
*
* @author Majeh
*/
public class Main {
public static void main( String[] args ) throws InterruptedException
{
Shapes sq1 = new Shapes(10, 100);
Shapes sq2 = new Shapes(50, 450);
JFrame application = new JFrame();
application.setBounds(0,0,sq1.getWidth(),sq1.getHeight());
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
application.setTitle("Moving shape OMG");
application.add( sq1 );
application.setSize(700, 700);
application.setVisible( true );
sq1.start();
}
}
That will allow me one moving square in my JPanel, how do I make multiple moving objects appear? The best I can do is have two squares that are constantly flashing, and sometimes the 2nd doesn't show up at all.