Hallo zusammen,
ich habe gerade folgende Klasse (als Anfänger und ohne fremder Hilfe *stolz bin*) erstellt:
Das Programm erfüllt seinen Zweck, sprich es zeichnet alle x Millisekunden einen neuen Kreis bis das Ende der Zeichenfläche erreicht wird.
Was sagt ihr zu dem Quelltext?
Ist der so in Ordnung oder sind Fehler enthalten?
Vielen Dank!
Viele Grüße
ich habe gerade folgende Klasse (als Anfänger und ohne fremder Hilfe *stolz bin*) erstellt:
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import javax.swing.Timer;
//Die Klasse Animation Kreis stellt den größer werdenen Kreis dar
public class AnimationKreis extends JPanel {
//eine Instanzvariable für den Timer
private Timer timer;
//eine Instanzvariable für das Bild welches den Hintergrund darstellt
private BufferedImage bild;
//für die Breite und die Höhe des Kreises
int breite = 100, hoehe = 100;
//eine innere Klasse für den Timer
class TimerListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//Koordinaten für die obere linke Ecke
int x, y;
//den Grafikkontext des Bildes beschaffen und überschreiben
Graphics g = bild.getGraphics();
g.fillRect(0,0,getWidth(),getHeight());
//die Mitte der Kreise berechnen
//Von der Mitte des Panels wird jeweils die
//Hälfte der Breite und der Höhe subtahiert.
//Dadurch werden alle Kreise zentriert dargestellt
x = getWidth()/2-breite/2;
y = getHeight()/2-hoehe/2;
//die Kreise zeichnen
paintOvals(x,y,breite,hoehe);
//die Breite jeweils erhöhen
breite += 1;
hoehe += 1;
//wenn die Breite bzw. Höhe des Kreises größer ist als
//die Breite bzw. Höhe des JPanels, dann wird der Timer
//gestoppt
if (breite > getWidth() || hoehe > getHeight())
timer.stop();
System.out.println(breite);
}
}
//der Konstruktor
public AnimationKreis () {
//die Größe des JPanels setzen
setSize(500,500);
//eine neue Instanz von BufferedImage erstellen
bild = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
//den Grafikkontext beschaffen
Graphics g = bild.getGraphics();
//die Vordergundfarbe setzen
g.setColor(Color.WHITE);
//ein gefülltes Rechteck erstellen
g.fillRect(0,0,getWidth(),getHeight());
//den Grafikkontext wieder frei geben
g.dispose();
//den timer ertellen
timer = new Timer (1, new TimerListener());
//Wiederholungen sind erlaubt
timer.setRepeats(true);
//den Timer starten
timer.start();
}
//die Überschriebenen Methoe paintComponent
@Override
public void paintComponent (Graphics g) {
super.paintComponent(g);
//das Bild zeichnen
g.drawImage(bild,0,0,this);
}
//die Methode, welche die Kreise zeichnet
//als Parameter werden die Koordinaten der linken oberen Ecke
//sowie die breite und höhe übergeben
public void paintOvals(int x, int y, int breite, int hoehe) {
//den Grafik-Kontext beschaffen
Graphics g = bild.getGraphics();
//die Vordergrundfarbe setzen
g.setColor(Color.BLACK);
//den Kreis zeichnen
g.drawOval(x,y,breite,hoehe);
//den Grafik-Kontext wieder frei geben
g.dispose();
//
repaint();
}
}
Das Programm erfüllt seinen Zweck, sprich es zeichnet alle x Millisekunden einen neuen Kreis bis das Ende der Zeichenfläche erreicht wird.
Was sagt ihr zu dem Quelltext?
Ist der so in Ordnung oder sind Fehler enthalten?
Vielen Dank!
Viele Grüße