[ milanvla @ 28.01.2007. 00:10 ] @
evo ovako,

imam jednu klasu na primer"
Code:

import java.awt.*;

class AnimatePanel extends Panel {
    int x =60, y=60;
 
    public void goAhead()
    {
        x++;
        y++;
        repaint();
    }
 
    public void paint(Graphics g)
    {
        g.setColor(Color.red);
        g.drawRect(x, y, 20, 20);
    }
}


U drugoj klasi imam:
Code:

import java.awt.*;
import java.applet.*;
 
public class Main extends Applet implements Runnable
{
    Thread drawThread;
    boolean running = false;
    AnimatePanel draw;
    int tempVal = 0;
 
    public void init()
    {
        draw = new AnimatePanel();
        setLayout(new BorderLayout());
        add(draw);
        drawThread = new Thread(this);
        running = true;
        drawThread.start();
    }
 
    public void destroy()
    {
        running = false;
        drawThread = null;    
    }
 
    public void run()
    {
        Thread tempThread = Thread.currentThread();
 
        while (drawThread == tempThread)
        {  
            draw.goAhead(); 
            try
            {
                Thread.sleep(500);
            }
            catch (InterruptedException e)
            {
                System.out.println( "e jebiga!");
            }
        }
    }
    
    public void paint(Graphics g)
    {
        g.setColor(Color.red);  
        g.drawRect(10, 10, 200, 200);
    }    
}


ok je sve samo sto ne moze da se izvrsi paint() method klase Main
probao sam da ubacujem repaint() ali ne pomaze. Kako sam razumeo ovo paint method iz klase AnimatePanel pregazi paint method iz Main klase.

zna li neko kako ovo da resim da svaki pain() crta svoje?

Hvala lepo


[Ovu poruku je menjao hyle dana 28.01.2007. u 10:22 GMT+1]
[ djalfirevic @ 28.01.2007. 07:35 ] @
Mozes li da postujes svoj kod ali sa [code] tagovima. Stavio si "C" veliko pa nije hteo da ti transformise kod...
[ hyle @ 28.01.2007. 11:45 ] @
Izvršava se paint() Main-a ali se ne vide njegovi rezultati jer je se nalaze "ispod" ovog AnimatePanel-a koga si ubacio. Nemoj dodavati taj panel i videćeš da paint odrađuje svoj posao.

Kada preklapaš paint metodu obavezno pozovi i paint metodu komponente koju nasleđuješ:
Code:

    public void paint(Graphics g) {
        super.paint(g);

        // ovde odradis svoj deo iscrtavanja
    } 


U ovom konkretnom primeru nisi imao posledica ali bi neke druge komponente izgubile originalni izgled ukoliko ne bi zvao paint iz klase koju nasledjuješ.
[ milanvla @ 29.01.2007. 21:50 ] @
Na zalost nisam uspeo da podesim kako ste mi kazali
evo ponovo code i sada sam ubacio obe klase u jedan fajl:

Code:

import java.awt.*;
import java.applet.*;
 
public class Test extends Applet implements Runnable
{
    Thread drawThread;
    boolean running = false;
    int tempVal = 0;
    AnimatePanel anim;
    
    public void init()
    {
        setLayout(new BorderLayout());
        anim = new AnimatePanel();
        add(anim);
        drawThread = new Thread(this);
        running = true;
        drawThread.start();
    }
 
    public void destroy()
    {
        running = false;
        drawThread = null;    
    }
 
    public void run()
    {
        Thread tempThread = Thread.currentThread();
 
        while (drawThread == tempThread)
        {  
            anim.goAhead();
            anim.repaint();
            repaint();
            try
            {
                Thread.sleep(50);
            }
            catch (InterruptedException e)
            {
                System.out.println( "e jebiga!");
            }
        }
    }
    
    public void paint(Graphics g){        
        System.out.println( "11");
        g.setColor(Color.red);  
        g.drawRect(10, 10, 200, 200);
    }  
    
    class AnimatePanel extends Canvas {
        
        int x =60, y=60;
     
        public void goAhead(){
            x++;
            y++;           
        }
     
        public void paint(Graphics g){             
            super.paint(g);
            g.setColor(Color.red);  
            g.drawRect(this.x, this.y, 20, 20);                
        }
    }
    
}



zamolio bih ponovo za objasnjenje.
paint method iz klase Test se uopste ne izvrsava?

hvala
[ bgd2500 @ 31.01.2007. 16:53 ] @
Pa rece ti covek. Apletov paint se izvrsava ali si nalepio AnimatedPanel (uzgred sto se zove panel ako nasledjuje Canvas-a ? :) na njega pa ga je poklopio.