Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

problem sa repaint metodom

[es] :: Java :: problem sa repaint metodom

[ Pregleda: 2504 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milanvla
Srbija

Član broj: 11686
Poruke: 132
*.dynamic.sbb.co.yu.



Profil

icon problem sa repaint metodom28.01.2007. u 00:10 - pre 208 meseci
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]
 
Odgovor na temu

djalfirevic

Član broj: 76932
Poruke: 497
*.dynamic.sbb.co.yu.



Profil

icon Re: problem sa repaint metodom28.01.2007. u 07:35 - pre 208 meseci
Mozes li da postujes svoj kod ali sa [code] tagovima. Stavio si "C" veliko pa nije hteo da ti transformise kod...
 
Odgovor na temu

hyle
Perica Milošević
Belgrade

Član broj: 30030
Poruke: 150
*.ADSL.neobee.net.

Sajt: www.linkedin.com/in/peric..


+4 Profil

icon Re: problem sa repaint metodom28.01.2007. u 11:45 - pre 208 meseci
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š.
 
Odgovor na temu

milanvla
Srbija

Član broj: 11686
Poruke: 132
*.dynamic.sbb.co.yu.



Profil

icon Re: problem sa repaint metodom29.01.2007. u 21:50 - pre 208 meseci
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
 
Odgovor na temu

bgd2500

Član broj: 55912
Poruke: 226
*.finsoft.co.yu.



+7 Profil

icon Re: problem sa repaint metodom31.01.2007. u 16:53 - pre 208 meseci
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.
 
Odgovor na temu

[es] :: Java :: problem sa repaint metodom

[ Pregleda: 2504 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.