# paint() bei maximieren des fensters



## Marcel_Handball (9. Mrz 2007)

Hallo,
ich möchte einen kleinen Nachbau des Spiels "Achtung die Kurve" erstellen und hab dazu folgendes bereites erstellt.


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

public class Achtung extends Applet implements Runnable
{   MyCanvas feld=new MyCanvas();
    Label eins,zwei;
    Font schrift;
    Thread myThread;
    boolean fahren=true;
    int x=150;
    int y=100;
    
    public void init()
    {   setLayout(null);
        setBackground(Color.blue); 
        resize(1000,670);
        
        schrift = new Font("Monospaced", Font.BOLD, 50);
        
        feld.setBounds(7,20,890,630);
        feld.setBackground(Color.black);
        add(feld);
        
        eins = new Label("0");
        eins.setBounds(945,40,50,50);
        eins.setFont(schrift);
        eins.setForeground(Color.red);
        add(eins);
        
        zwei = new Label("0");
        zwei.setBounds(945,130,50,50);
        zwei.setFont(schrift);
        zwei.setForeground(Color.red);
        add(zwei);
        
        
    }
    
    
    public void start(){
        if(myThread==null){myThread=new Thread(this); myThread.start();}
    }
    
    public void run(){
        Thread thisThread = Thread.currentThread();
        
        while(myThread == thisThread){
        
            feld.repaint();
            try{myThread.sleep(17);}catch(InterruptedException e){}
            x++;
        }
    }
    

     public void stop(){
        myThread = null;
    }
    
  
    class MyCanvas extends Canvas{
         public void paint(Graphics g){                                                           
            g.setColor(Color.red);
            g.fillOval(x,y,5,5);}
            
         public void update (Graphics g){
            paint(g);    
         }
   }   
}
```

Das Problem, dass ich jetzt habe ist, dass die bisher gezeichnete Schlange beim verändern des Browser-Fensters 
verschwindet. Wie erreiche ich, dass das bisher gezeichnete bestehen bleibt. Um zu dem Canvas Elemente hinzuzufügen, statt zu ersetzen, habe ich hier die update methode benutzt. Wie kann ich aber sonst zu dem bisher gezeichneten Graphic-Elemente hinzufügen, anstatt sie zu ersetzen?
Und wie krieg ich das Maximier-Problem hin?

Wenn ich das canvas rausnehme und die schlange auf den "normalen" hintergrund zeiche, (wie ich es eigentlich bevorzuge), bewegt sich nur ein Punkt. Wie kann ich daraus eine Schlange machen (schon gezeichnetes Element nicht ersetzen)?

Bitte um Hilfe
Mfg Marcel


----------



## dieta (10. Mrz 2007)

Du musst den kompletten Inhalt deines Fensters bei jedem paint()-Aufruf komplett neu zeichnen. Dann macht auch das minimieren keine Probleme mehr.


----------



## Marcel_Handball (10. Mrz 2007)

ok, aber wie erreiche ich das.

Wie kann ich das, was schon gezeichnet wurde so speichern, dass ich es erneut zeichnen lassen kann, halt nur mit einem Element mehr. Muss ich dazu die Graphic Elemente (deren Koordinaten) in einem Array speichern, der sich beim zeichnen der Schlange immer weiter vergrößert?

Gruß Marcel


----------



## Marcel_Handball (10. Mrz 2007)

Hab das Problem gelöst, indem ich alle Werte in einem Array gespeichert habe

Danke für die Hilfe


----------

