Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wie schaffe ich es das einfach um 2 pixel nach rechts zu kopieren sodass es sozusagen wandert? mit der funktion copyarea verschwindet der kreis immer bei mir?
normalerweise übergibt man eine Membervariable als Parameter die immer wieder vor dem Aufruf von repaint() geändert werden kann.
Aber wahrscheinlich liegt hier grade ein grundlegendes Missverständniss vor.
€dit:
Man sollte den 1. Buchstaben bei Variablen und Methodennamen klein schreiben, bei Klassennamen groß.
Deshalb: "stift" statt "Stift"
(außer Stift wäre bei dir ne eigene Klasse mit statischen Methoden^^, was ziemlich sinnlos wäre)
nur das Graphics-Objekt, welches bei paint() oder paintComponent() übergeben wird ist gut,
und auch das nicht in einem Klassenattribut speichern, sondern nur zum aktuellen Malen verwenden
als aller erstes musst du dich zwischen AWT und Swing entscheiden,
dann wäre es mal interessant, was das überhaupt für eine Klasse ist, von der wir hier reden, Frame, Canvas, JPanel, ..?
dieses programm funktioniert bei mir nicht..kann man nicht irgendwie (so simpel wie möglich) den kreis verschwinden lassen und ihn z.B 50 px weiter rechts neu zeichnen?:rtfm:
Les dir ein Tutorial durch (wie SlaterB bereits geschrieben hat) und/oder poste deinen kompletten Code hier. Das zeichnen in Java funktioniert nicht so wie du dir es vorstellst.
€dit:
Wegen deinem Code:
Guck dir nochmal den Code an den ich oben gepostet habe. Der Unterschied ist: Du rufst Thread.sleep innerhalb der paint-Methode auf. Das darf man unter keinen Umständen machen! paint muss immer innerhalb von ein paar millisekunden abgearbeitet werden können. In paint darf nichts außer das wirkliche malen der GUI stehen.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class WorkOne extends Thread {
String name;
int zahlen;
public WorkOne(int z) {
zahlen = z;
}
public void run() {
long summe = 0;
for (int i=0; i < zahlen; i++) {
String theString = "" + summe;
System.out.println("" + theString);
summe = summe + 1;
try
{
Thread.sleep(100);
}
catch(InterruptedException x) {
//...
}
}
}
public static void main(String[] args) {
WorkOne work1 = new WorkOne(400);
work1.start();
}
}
Ich hab herumprobiert ...wie könnte ich alles in einem asgeben lassen.. so wie ein countup der bis zu 400 geht. und dass alles in einer zahl ausgegebeen wird..