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.
Wenn du den Kreis RICHTIG zeichnest, ist die richtige Lösung: Ihn nicht mehr zeichnen werden (Futur 1) und repaint() aufrufen.
Code:
class Foo extends JPanel
{
Kreis kreis = new Kreis(100,100,50);
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if (kreis != null) kreis.maleAuf(g);
}
public void dontDrawItAnymore()
{
kreis = null;
repaint();
}
}
Erst sagst du, bevor du einen neuen malst muss der alte weg,
und jetzt willst du mehrere malen?
Beschreibe doch einfach mal, was es werden soll,
ohne darauf einzugehen, wie man es verwirklichen könnte.
Erst sagst du, bevor du einen neuen malst muss der alte weg,
und jetzt willst du mehrere malen?
Beschreibe doch einfach mal, was es werden soll,
ohne darauf einzugehen, wie man es verwirklichen könnte.
Andre, ich will einen Kreis zeichnen und löschen und einen größeren zeichen und löschen noch einen größeren zeichen u.s w . Das Kreis soll von innen nach außen größer werden immer .Wenn ich das mit einem timer verbinde der mit gezielten abstand zeichnet dann zieht wie eine animation . Der Kreis wir dann immer größer und größer . Durch diesen timer wiederholung hat man den eindruck der Kreis werde immer weiter vergrößert.
Wir können den Kreis mit drei Variablen zeichnen: x, y und d (Durchmesser).
Code:
g.drawOval(x, y, d, d);
Im Timer brauchen wir dann nur die Variablen anzupassen und repaint aufzurufen.
Der Aufruf von super.paintComponent(g) sorgt dafür, daß das Bild vor dem Neuzeichnen bereinigt wird:
public void startAnimation() {
javax.swing.Timer timer = new javax.swing.Timer(50, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (d == 0 || d > 200) {
x = 150;
y = 150;
d = 10;
} else {
d += 2;
x -= 1;
y -= 1;
}
repaint();
}
});
timer.start();
}
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
class Foo extends JPanel {
public int d=1;
public int x,y;
public void startAnimation() {
javax.swing.Timer timer = new javax.swing.Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if ( d == 0 || d > 200) {
x = 150;
y = 150;
d = 10;
} else {
d += 2;
x -= 1;
y -= 1;
}
repaint();
}
});
timer.start();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(x, y,d,d);
}
}
so ich habe das code so erstellt wie du es gesagt hast nur ich bekomme keine zeichnung
Wenn du selbstständig d=1 und das delay auf 500 setzt (OHNE SELBSTSTÄNDIG NACHZUDENKEN WAS DAS ZUR FOLGE HAT!!!) darfst du nicht so ungeduldig sein....
Wenn du selbstständig d=1 und das delay auf 500 setzt (OHNE SELBSTSTÄNDIG NACHZUDENKEN WAS DAS ZUR FOLGE HAT!!!) darfst du nicht so ungeduldig sein....