Hallo,
ich bin mal wieder bei einem JApplet zugange. Darauf möchte ich zeichnen.
ich weiß, dass man in einem "normalen" Applet einfach die paint(Graphics g) methode nehmen kann und update(Graphics g) überschreibt.
Nun sehe ich aber bei Eclipse mir STRG und Leertaste eine paint(), eine paintAll() und eine paintComponents() methode. Man beachte das "s" am Ende der Letzteren.
Wenn ich im JApplet einfach nur paint(Graphics g) aufrufe, flackert es (sollte dabei noch normal sein). Da ich aber auch die update(Graphics g) methode überschrieben habe, um so doppelt zu buffern, frage ich mich jedoch, warum dies nicht geht.
Eventuell kann da ja jemand helfen.
Hier erst einmal mein Code:
Achja, ich möchte kein JPanel verwenden, da ich gern irgendwelchen Komplikationen aus dem weg gehen möchte. Es wundert mich, dass in JApplet scheinbar keins eingebaut ist, obwohl in Applet ja ein Canvas ist...
ich bin mal wieder bei einem JApplet zugange. Darauf möchte ich zeichnen.
ich weiß, dass man in einem "normalen" Applet einfach die paint(Graphics g) methode nehmen kann und update(Graphics g) überschreibt.
Nun sehe ich aber bei Eclipse mir STRG und Leertaste eine paint(), eine paintAll() und eine paintComponents() methode. Man beachte das "s" am Ende der Letzteren.
Wenn ich im JApplet einfach nur paint(Graphics g) aufrufe, flackert es (sollte dabei noch normal sein). Da ich aber auch die update(Graphics g) methode überschrieben habe, um so doppelt zu buffern, frage ich mich jedoch, warum dies nicht geht.
Eventuell kann da ja jemand helfen.
Hier erst einmal mein Code:
Java:
import java.awt.*;
import javax.swing.*;
public class MainApplet extends JApplet implements Runnable {
private static final long serialVersionUID = 1L;
private Image image;
private Graphics doubleG;
private int p;
public void init() {
setSize(300,300);
setFocusable(true);
Thread t = new Thread(this);
t.start();
}
public void start(){
}
public void stop(){
}
public void update(Graphics g) {
if(image == null){
image = createImage(this.getWidth(),this.getHeight());
doubleG = image.getGraphics();
}
doubleG.setColor(getBackground());
doubleG.fillRect(0, 0, this.getWidth(), this.getHeight());
doubleG.setColor(getForeground());
paint(doubleG);
g.drawImage(image, 0, 0, this);
}
public void paint(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.RED);
g.drawString("Dies ist ein Test", p, 40);
}
public void run() {
while (true){
p++;
repaint();
try {
Thread.sleep(17);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Achja, ich möchte kein JPanel verwenden, da ich gern irgendwelchen Komplikationen aus dem weg gehen möchte. Es wundert mich, dass in JApplet scheinbar keins eingebaut ist, obwohl in Applet ja ein Canvas ist...