Übermalen wiederholen

G

gmx777

Gast
Hallo,

ich habe folgendes Programm, dass einen Kreis immer wieder groesser zeichnet, nun moechte ich diesen Vorgang wiederholen, d.h. wenn der Kreis das Ende des Rahmens errreicht hat, soll das Programm wieder dort beginnen zu zeichnen wo es urspruenglich startete. Wie kann man das erreichen?

[JAVA=1]public class AnimationBildPanel extends JPanel {

private static final long serialVersionUID = 1L;
private int x, y, breite, hoehe;
JFrame rahmen;
private Timer aniTimer;

class TimerListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent e) {

x = x - 1;
y = y - 1;
breite = breite + 2;
hoehe = hoehe + 2;

repaint();

if (x <= 1)

aniTimer.stop();
}
}


public AnimationBildPanel() {
setPreferredSize(new Dimension(900,700));
rahmen = new JFrame("Kreis");
rahmen.add(this);
rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
rahmen.pack();
rahmen.setVisible(true);

setBorder(new BevelBorder(BevelBorder.LOWERED));

x = 350;

y = 350;

breite = 0;

hoehe = 0;

aniTimer = new Timer(100, new TimerListener());

aniTimer.start();

}

@Override

public void paintComponent(Graphics g) {

super.paintComponent(g);

g.drawOval(x, y, breite, hoehe);

}

} [/code]

Und dann verstehe ich noch nicht warum hier ein Listener verwendet wird? Ein Listener dient doch der Ueberwachung von Ereignissen wie das druecken eines Buttons, betaetigen eines Drehfeldes etc. warum wird dieser hier verwendet, kann mir das jemand bitte erklaeren?
 
S

SlaterB

Gast
nimm
> aniTimer.stop();
raus, dann gehts schon mal ewig weiter,

dann musst du noch x/y so neu setzen dass wieder irgendwo angefangen wird, z.B. 350/350,
wann das passieren soll musst du wissen,
> if (x <= 1)
die vorhandene Bedingung zum stop ist wohl der Auslöser
 
G

gmx777

Gast
nimm
> aniTimer.stop();
raus, dann gehts schon mal ewig weiter,

dann musst du noch x/y so neu setzen dass wieder irgendwo angefangen wird, z.B. 350/350,
wann das passieren soll musst du wissen,
> if (x <= 1)
die vorhandene Bedingung zum stop ist wohl der Auslöser

Nee, wenn [JAVA=0] aniTimer.stop();[/code] rausnehme dann gehts weiter, der Kreis wird immer groesser, aber das will ich nicht, ich will wenn es stopt, dann soll er wieder dort beginnen wo er urspruenglich startete. Das Programm zeichnet den Kreis erst ganz klein, dann ubermalt es und zeichnet es etwas groeser und dies solange bis [JAVA=0] x <= 1[/code] und dann stopt es. Ich will aber wenn [JAVA=0] x <= 1[/code] erreicht ist und der Vorgang quasie beendet, dass es dann wiederholt wird
 
S

SlaterB

Gast
hast du den größeren Anteil meines Postings,
dann musst du noch x/y so neu setzen dass wieder irgendwo angefangen wird, z.B. 350/350,
wann das passieren soll musst du wissen,
> if (x <= 1)
die vorhandene Bedingung zum stop ist wohl der Auslöser
komplett überlesen obwohl du ihn auch zitierst?
 

Ähnliche Java Themen

Neue Themen


Oben