paint() bei maximieren des fensters

Status
Nicht offen für weitere Antworten.

Marcel_Handball

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

Code:
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

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

Marcel_Handball

Bekanntes Mitglied
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
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben