animacja kulki

0

Witam
Próbuję zrobić prostą animację kuleczki i nie mogę sobie poradzić w jednym momencie

public class PanelKropelki extends JPanel
	{

			public PanelKropelki()
				{
				
					this.setBackground(Color.GRAY) ;	
					
					startAnimation() ;
				}

			public void paintComponent(Graphics g)
				{
					super.paintComponent(g) ;
					g.drawImage(Kropelka.pobierzKropelke(), kropelka1.x, kropelka1.y ,null) ;
				}
			public void startAnimation() 
				{
					
					for (int i=0;i < 100; i++)
						{
							kropelka1.x++ ;
							kropelka1.y++ ;
							
							this.paint(this.getGraphics()) ;
							
							try
								{
									Thread.sleep(10) ;
								} catch (InterruptedException e)
								{
									
									e.printStackTrace();
								}
						}
				
				}
			
			Kropelka kropelka1 = new Kropelka() ; 
	}

w metodzie startAnimation() mam linijkę this.paint(this.getGraphics()) , która jest odpowiedzialna za odświeżenie panelu i wywołanie metody paintComponents() , w moim programie panel pokazuje się dopiero jak skończy się cała pętla i nie widzę pełnej animacji.
Czy ktoś podpowie mi gdzie robię błąd ,
dziękuję

0

próbowałem też z repaint() i też nie działa :(

0

Pętlę poruszającą kulkę zrób w osobnym wątku. Tak aby metoda paint wykonywała się w innym miejscu niż pętla wyznaczająca aktualne x i y kulki. Ogólnie możesz uznać, że pętle "zawieszają" wątki - tzn. nie chodzi oczywiście o zatrzymanie pracy ale nie zaktualizuje Ci się żaden komponent podczas wykonywania w nim pętli, jeżeli pętla nie będzie wykonywana w osobnym wątku.

0

Kulkę rozszerz o klasę TimerTask tam w metodzie run() zmieniaj x i y.

Zaś w głównej klasie otwórz obiekt klasy Timer i w nim uaktywnij kulkę.

0

Większych odstępów dać się nie dało? (2 TABY DO CHOLERY)

1 użytkowników online, w tym zalogowanych: 0, gości: 1