I have a JFrame, within that i have a JPanel that i would like to add a number of balls to, which will each move independently bouncing off the bounding box.
I have managed to get it working with 1 ball and a timer class, but now i am trying to get it to work with threads, so i assign 1 thread to each ball.
At the moment my structure is
BallFrame extends JFrame BallsPanel extends JPanel Ball.java extends component
BallRunnable implements runnable
I have added a println into the run method in BallRunnable and that prints out so i know my thread is running it is just not painting my component. Could someone tell me where i have gone wrong.
and this is where i add a ball to my JPanel (from my JFrame) and also set the thread for the ball
I don't understand your BallRunnable class. Why does it have a paintComponent() method when it isn't a GUI component? What is supposed to call this method? Also why does the first line of the method then recursively call itself which can only lead to a stack overflow? Finally the move method changes the x, y values of the BallRunnable object and not of the Ball.
The Ball class has a draw() method which I'm guessing should be paintComponent() as paintComponent() will be called as a result of the BallRunnable object calling repaint() on the Ball.
Joined: Apr 27, 2012
This thread can probably be removed as all the classes and structure have been completely changed, thankfully everything is now working though.
Joined: Aug 07, 2007
Glad to hear you have it working.
We don't remove threads just because they are resolved as the information here may help someone else in the future.