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?
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?