Animacja nakłada napis na napisie i wychodzi gruba czarna krecha

0

Witam,
ucząc się javy zrobiłem prostą animacje, która zamiast przesuwać napis nakłada jeden na drugi (nie usuwając poprzedniego napisu) przez co rysuje grubą czarną krechę. Proszę mi powiedzieć co jest nie tak.

import java.awt.*;
import javax.swing.*;

public class Anim extends JFrame{ 
public static void main(String[] args){
    Anim a = new Anim();
    a.setVisible(true);
}
    public Anim(){
	setSize(700,700);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	APane apan = new APane();
	getContentPane().add(apan);
    }
public class APane extends JPanel implements Runnable{ 
    Thread runner;
    int Xpos = 0;
    APane()
    {
	if(runner==null)
	{
	    runner = new Thread(this);
	    runner.start();
	}
    } 
    public void run()
    {
	while(true)
	{
	    repaint();
	    try
	    {
		Thread.sleep(20);
	    }catch(Exception ex){}
	}
    }
    public void stop()
    {
         if(runner!=null)
	{
	    runner = null;
        }
        }
    @Override
    public void paintComponent(Graphics g){
	g.drawString("Siema!", Xpos, 100);
	Xpos++;
	if(Xpos > 500)
	    Xpos = 0;
    }
    }
}
0

Bo nie mażesz panelu.

public void paintComponent(Graphics g){
  super.paintComponent(g);
  g.drawString("Siema!", Xpos, 100);
  Xpos++;
  if(Xpos > 500)
  Xpos = 0;
}
0

Dzięki wielkie Bogdans :)
Czyli odwołujemy się do klasy nadrzędnej.
A jeśli nie ma klasy nadrzędnej to wystarczy wywołać tą metodę w klasie Main ?

0

chciałem napisać metodzie main...

0

Nie rozumiem pytania, paintComponent(Graphics g) to metoda rysująca komponenty graficzne. Jeżeli tworzysz własny komponent (APane extends JPanel) i chcesz go inaczej rysować, to nadpisujesz te metodę. Wiersz super.paintComponent(Graphics g); jest wywołaniem metody z klasy bazowej (JPanel). Metoda ta w przypadku panelu rysuje go w kolorze tła. Metody paintComponent(Graphics g) nie powinieneś nigdy sam wywoływać (wyjątek stanowi opisane wyżej wywołanie super.paintComponent).

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