Java timer action listener

Ihre Hilfe Hausaufgaben mit swing-Timer, action-Listener und mehrere Objekte. Ich weiß nicht, ob das posting die Frage ist hier erlaubt, aber ich habe Probleme mit der animation, hier ist was ich bisher

Erstellen Sie eine Klasse Particle, die hat zwei Felder x und y ein
Konstruktor, initialisiert diese Felder, um zufällige Werte zwischen 0
und 500, - Methoden getX und getY, die Rückgabe Ihrer Werte, und eine Methode
void move (), die zufällig addiert oder subtrahiert man zu jedem der Werte
von x und y. (Die Mengen Hinzugefügt, um x und y sind zwei separate random
zahlen.) Als Nächstes erstellen Sie eine Klasse ParticleFieldWithTimer erweitert
JPanel. Diese Klasse sollte lieber 500 * 500 Pixel groß ist. Seine
Konstruktor sollte zuerst füllen Sie ein ArrayList-Feld mit 100
Partikel-Objekte, dann starten Sie einen Swing-Timer, der die Zecken 25 mal
zweite. Bei jedem tick, die Aktion Hörer soll zuerst die Methode aufrufen
bewegen Sie für jeden Partikel, und rufen dann repaint. Die paintComponent
Methode der ParticleFieldWithTimer ziehen sollte jedes Partikel als ein 3*3
Rechteck, um seine aktuellen Koordinaten. Stellen Sie sicher, dass der Timer
stoppen, wenn der Benutzer schließt den Rahmen

Dies ist die ParticleFieldWithTimer Klasse

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;


public class ParticleFieldWithTimer extends JPanel{
    private ArrayList<Particle> particle = new ArrayList<Particle>();
    Timer timer; 
    boolean b; 
    public ParticleFieldWithTimer (){
        this.setPreferredSize(new Dimension(500,500));


    for(int i = 0; i < 100; i++) { 
        particle.add(new Particle());
        timer = new Timer(40, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                //change polygon data
                //...
                Particle p = new Particle();
                p.move();
                repaint();

            }
        });


    }





}
   public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        for (Particle p: particle) {

        double temp1 = p.getX();
        double temp2 = p.getX();
        int tempX = (int) temp1;
        int tempY = (int) temp2;
        g2.fillRect(tempX, tempY, 3, 3);
        }




    }
   public static void main(String[] args) {
        final JFrame f = new JFrame("ParticleField");
        final ParticleFieldWithTimer bb = new ParticleFieldWithTimer();
        f.setLayout(new FlowLayout());
        f.add(bb);
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                try {
                    bb.finalize();
                } catch (Throwable e) {
                    //TODO Auto-generated catch block
                    e.printStackTrace();
                }
                f.dispose();
            }
        });
        f.pack();
        f.setVisible(true);
    }
}

Dies ist die Partikel-Klasse

import java.util.Random;


public class Particle {
private double x , y ;

Random r = new Random();
public Particle () {

    x = r.nextDouble()*500;
    y = r.nextDouble()*500;

}
public Double getX() {
    return x;
}
public Double getY() {
    return y;
}
public void move() {

    x = r.nextInt(2) - 1;
    y = r.nextInt(2) - 1;
    System.out.println(x + "  " + y);
}

}

"ich weiß nicht, ob das posting die Frage.." DYM-die Spezifikation für die Hausaufgaben? Was ist Ihr Frage?

InformationsquelleAutor user3363135 | 2014-03-13

Schreibe einen Kommentar