You are trying to draw the trucks and cars outside their own bounds. You think they will fit because of the call to setBounds, but the layout manager (GridLayout) ignores that and sets new bounds based on the frame size and number of vehicles.
Thanks for the reply. I tried changing the layout manager and the bounds, but then if i don't use grided layout, only one vehicle will show up. Can you tell me which should i use, or change?
purpose of program: randomly spawns 10 vehicle in random positions.(cars or trucks)
Your custom painting is wrong. For example you set the size of your Car to be (80, 55). But then you randomly generate x/y to be between 100/300. So if x/y are (100, 300) then the painting of your cars is done outside the bounds of your Car. Instead your Car painting should always be done from (0, 0). Then to position your cars on the parent panel you use the setLocation(x, y) of the Car.
The code should be something like:
only one vehicle will show up.
Another problem is that panels are opaque, which means that you can't see through the panel so all the panels will paint on top of one another.
Instead try extending JComponent. By default a JComponent doesn't paint a background so you should be able to see all Vehicles separately.