Hallo Leute,
zunächst eine kleine Absicherung falls meine Frage trivial ist: Ich bin ein Java-Anfänger.
ich habe ein Applet das von JApplet abgeleitet wird. In diesem Applet möchte ich eine Animation erstellen. Mein Problem ist jetzt, dass nach dem Aufruf von repaint() nicht die überschriebene Methode update() sondern paint() aufgerufen wird. Warum update() nicht aufgerufen wird, ist mir bekannt(denke ich), weil nämlich repaint() und paint() Methoden aus dem Packet java.awt.container sind und update() aus dem Packet javax.swing.JApplet ist. Somit wird die Update()-Methode aus dem Packet java.awt.container nach repaint() aufgerufen.
Ich habe auch schon versucht die Update()-Methode aus paint() herraus aufzurufen, aber das Ergebnis war nicht befriedigend.
Meine Frage:
Wie kann ich die richtige update()-Methode aufrufen, bzw. alle drei Methoden aus einem Packet aufrufen?
Danke im Voraus
Hier noch die vereinfachte Version meiner Animation:
zunächst eine kleine Absicherung falls meine Frage trivial ist: Ich bin ein Java-Anfänger.
ich habe ein Applet das von JApplet abgeleitet wird. In diesem Applet möchte ich eine Animation erstellen. Mein Problem ist jetzt, dass nach dem Aufruf von repaint() nicht die überschriebene Methode update() sondern paint() aufgerufen wird. Warum update() nicht aufgerufen wird, ist mir bekannt(denke ich), weil nämlich repaint() und paint() Methoden aus dem Packet java.awt.container sind und update() aus dem Packet javax.swing.JApplet ist. Somit wird die Update()-Methode aus dem Packet java.awt.container nach repaint() aufgerufen.
Ich habe auch schon versucht die Update()-Methode aus paint() herraus aufzurufen, aber das Ergebnis war nicht befriedigend.
Meine Frage:
Wie kann ich die richtige update()-Methode aufrufen, bzw. alle drei Methoden aus einem Packet aufrufen?
Danke im Voraus
Hier noch die vereinfachte Version meiner Animation:
Code:
import java.awt.*;
import javax.swing.*;
public class UpTestHaupt extends JApplet implements Runnable{
// Variablen für die Doppelpufferung
private Image dbImage;
private Graphics dbg;
private Thread th;
private int x=0,y=0;
public void init (){
}
public void start (){
th = new Thread(this);
th.start();
}
public void run(){
while(x<100){
x++;
y++;
repaint();
try{Thread.sleep(50);}
catch(Exception e){}
}
}
public void paint (Graphics g){
g.drawOval(x, y, 80, 80);
}
public void update (Graphics g)
{
// Initialisierung des DoubleBuffers
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// Bildschirm im Hintergrund löschen
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// Auf gelöschten Hintergrund Vordergrund zeichnen
dbg.setColor (getForeground());
paint (dbg);
// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
g.drawImage (dbImage, 0, 0, this);
}