Class StdGraph

java.lang.Object
de.pakad.tools.StdGraph
All Implemented Interfaces:
ActionListener, KeyListener, MouseListener, MouseMotionListener, EventListener

public final class StdGraph extends Object implements ActionListener, MouseListener, MouseMotionListener, KeyListener
Die Klasse StdGraph erweitert die Java-Ausgabeabstraktion um die Möglichkeit der grafischen Ausgabe in einem Fenster. Sie verwendet ein einfachen grafisches Modell, bestehend aus Punkten, Linien, Rechtecken, Kreisen und anderen geometrischen Figuren. Grafiken können im PNG-Format gespeichert werden. Außerdem können Grafiken animiert werden, um einfache Simulationen zu visualisieren.

Einführung

Ein erstes Programm mit StdGraph könnte so aussehen:

 public class TestStdGraph {
        public static void main(String[] args) {
                StdGraph.setPenRadius(0.05);
                StdGraph.setPenColor(Color.BLUE);
                StdGraph.point(0.5, 0.5);
                StdGraph.setPenColor(Color.MAGENTA);
                StdGraph.line(0.2, 0.2, 0.8, 0.2);
        }
 }
 
Wenn Sie dieses Programm übersetzen und ausführen, sollte ein Fenster geöffnet werden, in welchem Sie eine magentafarbene Linie und einen blauen Punkt sehen.

Punkte und Linien:

Die x- and y-Koordinaten müssen innerhalb der Zeichenfläche liegen. Das Intervall der zulässigen Koordinaten beträgt 0 bis 1. Außerhalb dieses Bereichs liegende Elemente sind unsichtbar.

Quadrate, Rechtecke, Kreise und Elipsen:

Die x- und y-Koordinaten bestimmen das Zentrum der Figur.

Während die obigen Methoden lediglich Umrisse zeichnen, füllen die folgenden Methoden eine Figor mit der aktuell gewählten Zeichenfarbe aus:

Kreisausschnitte:

Der Ausschnitt spannt sich zwischen den beiden angegebenen Gradzahlen auf, die gegen den Uhrzeigersinn anzugeben sind.

Polygone:

Die Koordinaten der Eckpunkte werden in Form von Arrays angegeben:

 double[] x = { 0.1, 0.2, 0.3, 0.2 };
 double[] y = { 0.2, 0.3, 0.2, 0.1 };
 StdGraph.filledPolygon(x, y);
 

Stiftstärke:

Die Standard-Stiftstärke ist 0.002 und wird nicht von Skalierungen der Zeichenfläche beeinflusst. Die Stiftstärke beträgt etwa 1/500 der Dimensionen der Zeichenfläche.

Um einen einzelnen Punkt in der Größe eines Pixels zu zeichnen, ist der Pinsel-/Stiftradius auf 0.0 zu setzen.

Stiftfarbe:

Größe der Zeichenfläche:

Standardmäßig stehen 800x800 Pixel zur Verfügung. Die Größe kann jedoch selbst definiert werden:

Skalierung und Koordinatensystem:

Alle Zeichnungen werden in einem Einheitsquadrat erstellt. Die linke Ecke unten hat die Koordinaten (0, 0). Die rechte oberer Ecke hat die Koordinaten (1, 0). Alle darzustellenden Werte in diesen Bereich hinein skaliert.

Text:

Die Standardschriftart ist Sans Serif mit 16 Punkten.


 Font font = new Font("Arial", Font.BOLD, 60);
 StdGraph.setFont(font);
 StdGraph.text(0.5, 0.5, "Hello, World");
 

Bilder:

Diese Methoden zeichnen Bilder auf der Zeichenfläche. Unterstützte Formate sind JPEG, PNG und GIF.

Speichern:

Als Bildformate werden PNG- und JPG-Dateien unterstützt.

Zeichenfläche löschen:

Animationen (mit Doppelpufferung):

Im Standard ist die Doppelpufferung ausgeschaltet, sodass alle gezeichneten Element sofort sichtbar sind. Wird die Doppelpufferung aktiviert, so wird quasi erst im Hintergrund gezeichnet. Die Zeichnung wird erst sichtbar, wenn show() aufgerufen wird. Dann wird die aktuelle Zeichnung aus dem Hintergrund in den Vordergrund kopiert und ersetzt diesen.

Der Haupteinsatz der Doppelpufferung sind animierte Zeichnungen:

  • Hintergrundzeichenfläche löschen
  • Objekte auf Hintergrundzeichenfläche zeichnen
  • Hintergrundzeichenfläche in den Vordergrund kopieren
  • je nach Intention: kurze Pause
 StdGraph.setScale(-2, +2);
 StdGraph.enableDoubleBuffering();

 double t = 0.0;
 while (true) {
        double x = Math.sin(t);
        double y = Math.cos(t);
        StdGraph.clear();
        StdGraph.filledCircle(x, y, 0.05);
        StdGraph.filledCircle(-x, -y, 0.05);
        StdGraph.show();
        StdGraph.pause(20);
        t += 0.02;
 }
 

Mit Hilfe von show(int t) kann der Code kürzer geschrieben werden. show(int t) schaltet die Doppelpufferung ein und steuert auch die Wartezeit zwischen den Bildern, die aus dem Hintergrund- in den Vordergrundpuffer geschoben werden.

 StdGraph.setScale(-2, +2);
 
 double t = 0.0;
 
 while (true) {
        double x = Math.sin(t);
        double y = Math.cos(t);
        StdGraph.clear();
        StdGraph.filledCircle(x, y, 0.05);
        StdGraph.filledCircle(-x, -y, 0.05);
        StdGraph.show(20);
        t += 0.02;
 }
 

Maus:

Tastatur:

Einstellungen:

Hinweis: Unter Ubuntu kann es erforderlich sein Module nachzuinstallieren:

           $ sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

COPYRIGHT BY Karsten Brodmann 2022 - Die Bibliothek darf ausschließlich für private Lernzwecke verwendet werden. Eine Weitergabe ist nur mit schriftlicher Genehmigung des Autors gestattet.

Version:
1.0
Author:
Karsten Brodmann (kb@punkt-akademie.de)
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Die Methode kann nicht direkt aufgerufen werden.
    static void
    arc(double x, double y, double radius, double angle1, double angle2)
    Zeichnen eines Kreisausschnittes mit den angegebenen Radius und Zentrum in (x, y), von angle1 bis angle2 (in Winkelgraden).
    static void
    circle(double x, double y, double radius)
    Zeichnen eines Kreises mit dem angegebenen Radius und dem Zentrum in (x, y).
    static void
    Zeichenfläche löschen (weiß).
    static void
    clear(Color color)
    Zeichenfläche mit spezieller Hintergrundfarbe löschen.
    static void
    Doppelpufferung deaktivieren.
    static void
    ellipse(double x, double y, double width, double height)
    Zeichnen einer Ellipse mit den angegebenen Halbachsen und dem Zentrum bei (x, y).
    static void
    Aktivierung der Doppelpufferung.
    static void
    filledCircle(double x, double y, double radius)
    Zeichnen eines gefüllten Kreises mit dem angegebenen Radius und dem Zentrum in (x, y).
    static void
    filledEllipse(double x, double y, double width, double height)
    Zeichnen einer gefüllten Ellipse mit den angegebenen Halbachsen und dem Zentrum bei (x, y).
    static void
    filledPolygon(double[] x, double[] y)
    Zeichnen eines gefüllten Polygons mit den Eckpunkten: (x0, y0), (x1, y1), ..., (xn–1, yn–1).
    static void
    filledRectangle(double x, double y, double halfWidth, double halfHeight)
    Zeichnen eines gefüllten Rechtecks mit Zentrum (x, y).
    static void
    filledSquare(double x, double y, double halfLength)
    Zeichnen eines gefüllten Quadrats mit Zentrum (x, y).
    static Font
    rückgabe der aktuellen Schriftart.
    static Color
    Rückgabe der aktuellen Stiftfarbe.
    static double
    Rückgabe der aktuellen Stiftstärke.
    static boolean
    Abfrage, ob noch Tastedrücke in der Warteschlange stehen, die bisher noch nicht verarbeitet wurden (nextKeyTyped()).
    static boolean
    keyPressed(int keycode)
    Prüfen, ob die angegebene Taste gedrückt wurde.
    void
    Diese Methode kann nicht direkt aufgerufen werden.
    void
    Diese Methode kann nicht direkt aufgerufen werden.
    void
    Diese Methode kann nicht direkt aufgerufen werden, auch wenn sie öffentlich ist.
    static void
    line(double x0, double y0, double x1, double y1)
    Zeichnen einer Linie zwischen (x0, y0) und (x1, y1).
    void
    Diese Methode kann nicht direkt aufgerufen werden.
    void
    Diese Methode kann nicht direkt aufgerufen werden.
    void
    Diese Methode kann nicht direkt aufgerufen werden.
    void
    Diese Methode kann nicht direkt aufgerufen werden.
    void
    Diese Methode kann nicht direkt aufgerufen werden.
    static boolean
    Rückgabe, ob die Maus getippt wurde.
    void
    Diese Methode kann nicht direkt aufgerufen werden.
    void
    Diese Methode kann nicht direkt aufgerufen werden.
    static double
    Rückgabe der x-Koordinate des Mauszeigers.
    static double
    Rückgabe der y-Koordinate des Mauszeigers.
    static char
    Abrufen des nächsten, bislang nicht verarbeiteten, Tastendrucks.
    static void
    pause(int t)
    Pausieren für die angegebene Anzahl von Millisekunden.
    static void
    picture(double x, double y, String filename)
    Zeichnen des Bildes mit Zentrum in (x, y).
    static void
    picture(double x, double y, String filename, double angle)
    Zeichnen des Bildes mit Zentrum in (x, y), rotiert um den angegebenen Winkel.
    static void
    picture(double x, double y, String filename, double scaledWidth, double scaledHeight)
    Zeichnen des Bildes mit Zentrum in (x, y), skaliert auf die angegebene Größe.
    static void
    picture(double x, double y, String filename, double scaledWidth, double scaledHeight, double angle)
    Zeichnen des Bildes mit Zentrum in (x, y), skaliert auf die angegebene Größe und um den angegebenen Winkel rotiert.
    static void
    point(double x, double y)
    Zeichnen eines Punktes bei Koordinate (x, y).
    static void
    polygon(double[] x, double[] y)
    Zeichnen eines Polygons mit den Eckpunkten: (x0, y0), (x1, y1), ..., (xn–1, yn–1).
    static void
    rectangle(double x, double y, double halfWidth, double halfHeight)
    Zeichnen eines Rechtecks mit Zentrum (x, y).
    static void
    save(String filename)
    Speicherung einer Zeichnung im PNG- oder JPG-Format.
    static void
    Standardgröße der Zeichenfläche einstellen
    static void
    setCanvasSize(int newWidth, int newHeight)
    Setzen der Zeichenflächegröße auf newWidth-mal-newHeight (in Pixeln).
    static void
    Einstellen der Standardschriftart (Sans Serif, 16 Punkte).
    static void
    setFont(Font fontfamily)
    Einstellen der Schriftart.
    static void
    Setzen der Standard-Stiftfarbe (schwarz).
    static void
    setPenColor(int red, int green, int blue)
    Setzen der Stiftfarbe auf die angegebene RGB-Farbe
    static void
    Setzen der Stiftfarbe auf die angegebene Farbe
    static void
    Setzen der Standard-Stiftstärke (0.002).
    static void
    setPenRadius(double radius)
    Setzen der Stiftstärke auf den angegebenen Radius.
    static void
    0- und y-Skalierung ist per Vorgabe 0.0 bis 1.0.
    static void
    setScale(double min, double max)
    Setzen der x- und y-Skalierung auf die angegebenen Werte (symmetrische Skalierung).
    static void
    x-Skalierung ist per Vorgabe 0.0 bis 1.0.
    static void
    setXScale(double min, double max)
    Setzen der x-Skalierung auf die angegebenen Werte.
    static void
    y-Skalierung ist per Vorgabe 0.0 bis 1.0.
    static void
    setYScale(double min, double max)
    Setzen der y-Skalierung auf die angegebenen Werte.
    static void
    Kopieren des Offline-Inhalts des Bildschirmpuffers in den sichtbaren Puffer.
    static void
    show(int t)
    Kopieren des Bildpuffers in den sichtbaren Bildschirmspeicher, pausieren und einschalten der Doppelpufferung.
    static void
    square(double x, double y, double halfLength)
    Zeichnen eines Quadrats mit Zentrum (x, y).
    static void
    text(double x, double y, String text)
    Textausgabe, zentriert bei (x, y).
    static void
    text(double x, double y, String text, double angle)
    Textausgabe, zentriert bei (x, y) und um angegebenen Winkel rotiert.
    static void
    textLeft(double x, double y, String text)
    Textausgabe, links ausgerichtet bei (x, y).
    static void
    textRight(double x, double y, String text)
    Textausgabe, links ausgerichtet bei (x, y).

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • setCanvasSize

      public static void setCanvasSize()
      Standardgröße der Zeichenfläche einstellen
    • setCanvasSize

      public static void setCanvasSize(int newWidth, int newHeight)
      Setzen der Zeichenflächegröße auf newWidth-mal-newHeight (in Pixeln). Die Zeichenfläche wird gelöscht und das Koordinatensystem neu kalibriert. Stiftstärke, Stiftfarbe und Schriftart werden auf Standardwerte zurückgesetzt. Im Normalfall wird die Methode nur einmalig, zu Beginn eines Programms, aufgerufen.
      Parameters:
      newWidth - in Pixeln
      newHeight - in Pixeln
      Throws:
      IllegalArgumentException - bei nicht-positiven Werten für newWidth und/oder newHeight
    • setXScale

      public static void setXScale()
      x-Skalierung ist per Vorgabe 0.0 bis 1.0.
    • setYScale

      public static void setYScale()
      y-Skalierung ist per Vorgabe 0.0 bis 1.0.
    • setScale

      public static void setScale()
      0- und y-Skalierung ist per Vorgabe 0.0 bis 1.0.
    • setXScale

      public static void setXScale(double min, double max)
      Setzen der x-Skalierung auf die angegebenen Werte.
      Parameters:
      min - Minimum der x-Skalierung
      max - Maximum der x-Skalierung
      Throws:
      IllegalArgumentException - wenn (max == min)
      IllegalArgumentException - wenn min und/oder max gleich NaN oder unendlich
    • setYScale

      public static void setYScale(double min, double max)
      Setzen der y-Skalierung auf die angegebenen Werte.
      Parameters:
      min - Minimum der y-Skalierung
      max - Maximum der y-Skalierung
      Throws:
      IllegalArgumentException - wenn (max == min)
      IllegalArgumentException - wenn min und/oder max gleich NaN oder unendlich
    • setScale

      public static void setScale(double min, double max)
      Setzen der x- und y-Skalierung auf die angegebenen Werte (symmetrische Skalierung).
      Parameters:
      min - Minimum der Skalierung
      max - Maximum der Skalierung
      Throws:
      IllegalArgumentException - wenn (max == min)
      IllegalArgumentException - wenn min und/oder max gleich NaN oder unendlich
    • clear

      public static void clear()
      Zeichenfläche löschen (weiß).
    • clear

      public static void clear(Color color)
      Zeichenfläche mit spezieller Hintergrundfarbe löschen.
      Parameters:
      color - Hintergrundfarbe
      Throws:
      IllegalArgumentException - falls color null ist
    • getPenRadius

      public static double getPenRadius()
      Rückgabe der aktuellen Stiftstärke.
      Returns:
      aktueller Radius des Zeichenstifts
    • setPenRadius

      public static void setPenRadius()
      Setzen der Standard-Stiftstärke (0.002).

      Der Zeichenstift ist kreisförmig, so dass Linien runde Enden haben. Beim Zeichnen eines Punktes hat auch dieser eine kreisförmige Fläche. Skalierungen des Koordinatensystems haben keinen Einfluss auf die Stiftstärke.

    • setPenRadius

      public static void setPenRadius(double radius)
      Setzen der Stiftstärke auf den angegebenen Radius.

      Der Zeichenstift ist kreisförmig, so dass Linien runde Enden haben. Beim Zeichnen eines Punktes hat auch dieser eine kreisförmige Fläche. Skalierungen des Koordinatensystems haben keinen Einfluss auf die Stiftstärke.

      Parameters:
      radius - Radius der Stiftstärke
      Throws:
      IllegalArgumentException - falls radius negativ, NaN oder unendlich
    • getPenColor

      public static Color getPenColor()
      Rückgabe der aktuellen Stiftfarbe.
      Returns:
      aktuelle Zeichenfarbe des Stifts
    • setPenColor

      public static void setPenColor()
      Setzen der Standard-Stiftfarbe (schwarz).
    • setPenColor

      public static void setPenColor(Color color)
      Setzen der Stiftfarbe auf die angegebene Farbe
      Parameters:
      color - des Stiftes
      Throws:
      IllegalArgumentException - falls color null ist
    • setPenColor

      public static void setPenColor(int red, int green, int blue)
      Setzen der Stiftfarbe auf die angegebene RGB-Farbe
      Parameters:
      red - Rot-Anteil (0 bis 255)
      green - Grün-Anteil (0 bis 255)
      blue - Blau-Anteil (0 bis 255)
      Throws:
      IllegalArgumentException - falls red, grün oderr blue außerhalb der abgegebenen Bereiche
    • getFont

      public static Font getFont()
      rückgabe der aktuellen Schriftart.
      Returns:
      aktuelle Schriftart
    • setFont

      public static void setFont()
      Einstellen der Standardschriftart (Sans Serif, 16 Punkte).
    • setFont

      public static void setFont(Font fontfamily)
      Einstellen der Schriftart.
      Parameters:
      fontfamily - Schriftart
      Throws:
      IllegalArgumentException - falss fontfamily null ist
    • line

      public static void line(double x0, double y0, double x1, double y1)
      Zeichnen einer Linie zwischen (x0, y0) und (x1, y1).
      Parameters:
      x0 - the x-coordinate of one endpoint
      y0 - the y-coordinate of one endpoint
      x1 - the x-coordinate of the other endpoint
      y1 - the y-coordinate of the other endpoint
      Throws:
      IllegalArgumentException - if any coordinate is either NaN or infinite
    • point

      public static void point(double x, double y)
      Zeichnen eines Punktes bei Koordinate (x, y).

      Der Punkt ist ein gefüllter Kreis dess Radius der Stiftstärke entspricht. Um ein einzelnes Pixel zu zeichnen, muss die Stiftstärke vorher auf 0 gesetzt werden.

      Parameters:
      x - x-Koordinate des Punktes
      y - y-Koordinate des Punktes
      Throws:
      IllegalArgumentException - falls x oder y NaN oder unendlich sind
    • circle

      public static void circle(double x, double y, double radius)
      Zeichnen eines Kreises mit dem angegebenen Radius und dem Zentrum in (x, y).
      Parameters:
      x - x-Koordinate des Kreiszentrums
      y - y-Koordinate des Kreiszentrums
      radius - Kreisradius
      Throws:
      IllegalArgumentException - falls radius negativ
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
    • filledCircle

      public static void filledCircle(double x, double y, double radius)
      Zeichnen eines gefüllten Kreises mit dem angegebenen Radius und dem Zentrum in (x, y).
      Parameters:
      x - x-Koordinate des Kreiszentrums
      y - y-Koordinate des Kreiszentrums
      radius - Kreisradius
      Throws:
      IllegalArgumentException - falls radius negativ
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
    • ellipse

      public static void ellipse(double x, double y, double width, double height)
      Zeichnen einer Ellipse mit den angegebenen Halbachsen und dem Zentrum bei (x, y).
      Parameters:
      x - x-Koordinate des Zentrums der Ellipse
      y - y-Koordinate des Zentrums der Ellipse
      width - Breite der Ellipse
      height - Höhe der Ellipse
      Throws:
      IllegalArgumentException - falls width oder height negativ ist
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
    • filledEllipse

      public static void filledEllipse(double x, double y, double width, double height)
      Zeichnen einer gefüllten Ellipse mit den angegebenen Halbachsen und dem Zentrum bei (x, y).
      Parameters:
      x - x-Koordinate des Zentrums der Ellipse
      y - y-Koordinate des Zentrums der Ellipse
      width - Breite der Ellipse
      height - Höhe der Ellipse
      Throws:
      IllegalArgumentException - falls width oder height negativ ist
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
    • arc

      public static void arc(double x, double y, double radius, double angle1, double angle2)
      Zeichnen eines Kreisausschnittes mit den angegebenen Radius und Zentrum in (x, y), von angle1 bis angle2 (in Winkelgraden).
      Parameters:
      x - x-Koordinate des Zentrums des Kreises
      y - y-Koordinate des Zentrums des Kreises
      radius - Kreisradius
      angle1 - Startwinkel: 0 bedeutet einen Start bei 3 Uhr
      angle2 - Endwinkel des Kreisbogens: wenn sie einen 90 Grad Bogen zeichnen wollen, dann beträgt der Winkel angle1+90
      Throws:
      IllegalArgumentException - falls radius negativ ist
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
    • square

      public static void square(double x, double y, double halfLength)
      Zeichnen eines Quadrats mit Zentrum (x, y).
      Parameters:
      x - x-Koordinate des Zentrums des Quadrates
      y - y-Koordinate des Zentrums des Quadrates
      halfLength - Hälfte der Seitenlänge des Quadrates
      Throws:
      IllegalArgumentException - falls halfLength negativ
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
    • filledSquare

      public static void filledSquare(double x, double y, double halfLength)
      Zeichnen eines gefüllten Quadrats mit Zentrum (x, y).
      Parameters:
      x - x-Koordinate des Zentrums des Quadrates
      y - y-Koordinate des Zentrums des Quadrates
      halfLength - Hälfte der Seitenlänge des Quadrates
      Throws:
      IllegalArgumentException - falls halfLength negativ
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
    • rectangle

      public static void rectangle(double x, double y, double halfWidth, double halfHeight)
      Zeichnen eines Rechtecks mit Zentrum (x, y).
      Parameters:
      x - x-Koordinate des Zentrums des Quadrates
      y - y-Koordinate des Zentrums des Quadrates
      halfWidth - Hälfte der Rechtecksbreite
      halfHeight - Hälfte der Rechteckshöhe
      Throws:
      IllegalArgumentException - if either halfWidth or halfHeight is negative
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
      IllegalArgumentException - falls halfWidth oder halfHeight negativ
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
    • filledRectangle

      public static void filledRectangle(double x, double y, double halfWidth, double halfHeight)
      Zeichnen eines gefüllten Rechtecks mit Zentrum (x, y).
      Parameters:
      x - x-Koordinate des Zentrums des Quadrates
      y - y-Koordinate des Zentrums des Quadrates
      halfWidth - Hälfte der Rechtecksbreite
      halfHeight - Hälfte der Rechteckshöhe
      Throws:
      IllegalArgumentException - if either halfWidth or halfHeight is negative
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
      IllegalArgumentException - falls halfWidth oder halfHeight negativ
      IllegalArgumentException - falls irgendein Argument NaN oder unendlich ist
    • polygon

      public static void polygon(double[] x, double[] y)
      Zeichnen eines Polygons mit den Eckpunkten: (x0, y0), (x1, y1), ..., (xn–1, yn–1).
      Parameters:
      x - Array der x-Koordinaten des Polygons
      y - Array der y-Koordinaten des Polygons
      Throws:
      IllegalArgumentException - falls x[] und y[] unterschiedlich viele Elemente besitzen
      IllegalArgumentException - falls eine Koordinate NaN oder unendlich
      IllegalArgumentException - falls x[] oder y[] null ist
    • filledPolygon

      public static void filledPolygon(double[] x, double[] y)
      Zeichnen eines gefüllten Polygons mit den Eckpunkten: (x0, y0), (x1, y1), ..., (xn–1, yn–1).
      Parameters:
      x - Array der x-Koordinaten des Polygons
      y - Array der y-Koordinaten des Polygons
      Throws:
      IllegalArgumentException - falls x[] und y[] unterschiedlich viele Elemente besitzen
      IllegalArgumentException - falls eine Koordinate NaN oder unendlich
      IllegalArgumentException - falls x[] oder y[] null ist
    • picture

      public static void picture(double x, double y, String filename)
      Zeichnen des Bildes mit Zentrum in (x, y).

      Unterstützte Bildformate sind: JPG/JPEG, PNG und GIF.

      Parameters:
      x - x-Koordinate des Bildzentrums
      y - y-Koordinate des Bildzentrums
      filename - Dateiname des Bildes
      Throws:
      IllegalArgumentException - falls die angegebene Biddatei ungültig
      IllegalArgumentException - falls x oder y NaN oder unendlich ist
      IllegalArgumentException - falls filename null ist
    • picture

      public static void picture(double x, double y, String filename, double angle)
      Zeichnen des Bildes mit Zentrum in (x, y), rotiert um den angegebenen Winkel.

      Unterstützte Bildformate sind: JPG/JPEG, PNG und GIF.

      Parameters:
      x - x-Koordinate des Bildzentrums
      y - y-Koordinate des Bildzentrums
      filename - Dateiname des Bildes
      angle - Drehwinkel in Winkelgraden (gegen den Uhrzeigersinn)
      Throws:
      IllegalArgumentException - falls die angegebene Biddatei ungültig
      IllegalArgumentException - falls x, y oder angle NaN oder unendlich ist
      IllegalArgumentException - falls filename null ist
    • picture

      public static void picture(double x, double y, String filename, double scaledWidth, double scaledHeight)
      Zeichnen des Bildes mit Zentrum in (x, y), skaliert auf die angegebene Größe.

      Unterstützte Bildformate sind: JPG/JPEG, PNG und GIF.

      Parameters:
      x - x-Koordinate des Bildzentrums
      y - y-Koordinate des Bildzentrums
      filename - Dateiname des Bildes
      scaledWidth - Breite des Bildes (in Bildschirmkoordinaten)
      scaledHeight - Höhe des Bildes (in Bildschirmkoordinaten)
      Throws:
      IllegalArgumentException - falls scaledWidth oder scaledHeight negativ
      IllegalArgumentException - falls die angegebene Biddatei ungültig
      IllegalArgumentException - falls x oder y NaN oder unendlich ist
      IllegalArgumentException - falls filename null ist
    • picture

      public static void picture(double x, double y, String filename, double scaledWidth, double scaledHeight, double angle)
      Zeichnen des Bildes mit Zentrum in (x, y), skaliert auf die angegebene Größe und um den angegebenen Winkel rotiert.

      Unterstützte Bildformate sind: JPG/JPEG, PNG und GIF.

      Parameters:
      x - x-Koordinate des Bildzentrums
      y - y-Koordinate des Bildzentrums
      filename - Dateiname des Bildes
      scaledWidth - Breite des Bildes (in Bildschirmkoordinaten)
      scaledHeight - Höhe des Bildes (in Bildschirmkoordinaten)
      angle - Drehwinkel in Winkelgraden (gegen den Uhrzeigersinn)
      Throws:
      IllegalArgumentException - falls scaledWidth oder scaledHeight negativ
      IllegalArgumentException - falls die angegebene Biddatei ungültig
      IllegalArgumentException - falls x oder y NaN oder unendlich ist
      IllegalArgumentException - falls filename null ist
    • text

      public static void text(double x, double y, String text)
      Textausgabe, zentriert bei (x, y).
      Parameters:
      x - x-Koordinate der Textmitte
      y - y-Koordinate der Textmitte
      text - auszugebende Zeichenkette
      Throws:
      IllegalArgumentException - falls text null ist
      IllegalArgumentException - falls x oder y NaN oder unendlich
    • text

      public static void text(double x, double y, String text, double angle)
      Textausgabe, zentriert bei (x, y) und um angegebenen Winkel rotiert.
      Parameters:
      x - x-Koordinate der Textmitte
      y - y-Koordinate der Textmitte
      text - auszugebende Zeichenkette
      angle - Rotation in Winkelgraden (gegen den Uhrzeigersinn)
      Throws:
      IllegalArgumentException - falls text null ist
      IllegalArgumentException - falls x oder y NaN oder unendlich
    • textLeft

      public static void textLeft(double x, double y, String text)
      Textausgabe, links ausgerichtet bei (x, y).
      Parameters:
      x - x-Koordinate der linken Textkante
      y - y-Koordinate der linken Textkante
      text - auszugebende Zeichenkette
      Throws:
      IllegalArgumentException - falls text null ist
      IllegalArgumentException - falls x oder y NaN oder unendlich
    • textRight

      public static void textRight(double x, double y, String text)
      Textausgabe, links ausgerichtet bei (x, y).
      Parameters:
      x - x-Koordinate der rechten Textkante
      y - y-Koordinate der rechten Textkante
      text - auszugebende Zeichenkette
      Throws:
      IllegalArgumentException - falls text null ist
      IllegalArgumentException - falls x oder y NaN oder unendlich
    • show

      public static void show(int t)
      Kopieren des Bildpuffers in den sichtbaren Bildschirmspeicher, pausieren und einschalten der Doppelpufferung.
      Parameters:
      t - Anzahl Millisekunden pausieren
    • pause

      public static void pause(int t)
      Pausieren für die angegebene Anzahl von Millisekunden.
      Parameters:
      t - Anzahl Millisekunden pausieren
    • show

      public static void show()
      Kopieren des Offline-Inhalts des Bildschirmpuffers in den sichtbaren Puffer. Die Methode ist nur sinnvoll zu nutzen, wenn Doppelpufferung aktiviert ist (enableDoubleBuffering())
    • enableDoubleBuffering

      public static void enableDoubleBuffering()
      Aktivierung der Doppelpufferung. Zeichungen werden quasi im Hintergrund angelegt, ein Bild wird erst gezeigt, wenn show() oder show(int t) aufgerufen wird. - Sinnvoll für Animationen oder komplexe Bilder, die einen langsamen Aufbau haben.
    • disableDoubleBuffering

      public static void disableDoubleBuffering()
      Doppelpufferung deaktivieren.
    • save

      public static void save(String filename)
      Speicherung einer Zeichnung im PNG- oder JPG-Format. Das Format wird anhand der Dateiendung des Dateinamens erkannt.
      Parameters:
      filename - Name der zu sichernden Datei (.png oder .jpg)
      Throws:
      IllegalArgumentException - falls filename null
    • actionPerformed

      public void actionPerformed(ActionEvent e)
      Die Methode kann nicht direkt aufgerufen werden.
      Specified by:
      actionPerformed in interface ActionListener
    • mousePressed

      public static boolean mousePressed()
      Rückgabe, ob die Maus getippt wurde.
      Returns:
      true falls Maus gedrückt, false sonst
    • mouseX

      public static double mouseX()
      Rückgabe der x-Koordinate des Mauszeigers.
      Returns:
      x-Koordinate des Mauszeigers
    • mouseY

      public static double mouseY()
      Rückgabe der y-Koordinate des Mauszeigers.
      Returns:
      y-Koordinate des Mauszeigers
    • mouseClicked

      public void mouseClicked(MouseEvent e)
      Diese Methode kann nicht direkt aufgerufen werden.
      Specified by:
      mouseClicked in interface MouseListener
    • mouseEntered

      public void mouseEntered(MouseEvent e)
      Diese Methode kann nicht direkt aufgerufen werden.
      Specified by:
      mouseEntered in interface MouseListener
    • mouseExited

      public void mouseExited(MouseEvent e)
      Diese Methode kann nicht direkt aufgerufen werden.
      Specified by:
      mouseExited in interface MouseListener
    • mousePressed

      public void mousePressed(MouseEvent e)
      Diese Methode kann nicht direkt aufgerufen werden.
      Specified by:
      mousePressed in interface MouseListener
    • mouseReleased

      public void mouseReleased(MouseEvent e)
      Diese Methode kann nicht direkt aufgerufen werden.
      Specified by:
      mouseReleased in interface MouseListener
    • mouseDragged

      public void mouseDragged(MouseEvent e)
      Diese Methode kann nicht direkt aufgerufen werden.
      Specified by:
      mouseDragged in interface MouseMotionListener
    • mouseMoved

      public void mouseMoved(MouseEvent e)
      Diese Methode kann nicht direkt aufgerufen werden.
      Specified by:
      mouseMoved in interface MouseMotionListener
    • hasNextKeyTyped

      public static boolean hasNextKeyTyped()
      Abfrage, ob noch Tastedrücke in der Warteschlange stehen, die bisher noch nicht verarbeitet wurden (nextKeyTyped()).
      Returns:
      true falls noch unverarbeitete Tastenanschläge vorhanden, sonst false
    • nextKeyTyped

      public static char nextKeyTyped()
      Abrufen des nächsten, bislang nicht verarbeiteten, Tastendrucks. Es wird jeweils ein Unicode-Zeichen zurückgegeben, korrespondierend zur gedrückten Taste (z.B. 'a' oder 'A').

      Funktionstasten (z.B. F1 oder Cursortasten) und Modifizierertasten (wie z.B. CTRL) werden nicht erkannt!

      Returns:
      nächster unverarbeiteter Tastaturanschlag
      Throws:
      NoSuchElementException - falls kein Tastenanschlag mehr im Puffer
    • keyPressed

      public static boolean keyPressed(int keycode)
      Prüfen, ob die angegebene Taste gedrückt wurde.

      Diese Methode verwendet den Keycode (entsprechend einer physikalischen Taste) als Argument. Sie kann Funktions- und Modifizierertasten erkennen. Siehe KeyEvent für eine Beschreibung der Keycodes.

      Parameters:
      keycode - Keycode der zu prüfenden Taste
      Returns:
      true falls keycode aktuell gedrückt wurde, sonst false
    • keyTyped

      public void keyTyped(KeyEvent e)
      Diese Methode kann nicht direkt aufgerufen werden, auch wenn sie öffentlich ist.
      Specified by:
      keyTyped in interface KeyListener
    • keyPressed

      public void keyPressed(KeyEvent e)
      Diese Methode kann nicht direkt aufgerufen werden.
      Specified by:
      keyPressed in interface KeyListener
    • keyReleased

      public void keyReleased(KeyEvent e)
      Diese Methode kann nicht direkt aufgerufen werden.
      Specified by:
      keyReleased in interface KeyListener