Class StdGraph
- All Implemented Interfaces:
ActionListener,KeyListener,MouseListener,MouseMotionListener,EventListener
StdGraph erweitert die Standard-Ausgabeabstraktion um eine einfache
grafische Ausgabe in einem eigenen Fenster.
Die Klasse stellt dafür ein kleines, statisches Zeichenmodell bereit
(Punkte, Linien, Rechtecke, Kreise, Ellipsen, Polygone, Text und Bilder).
Alle Zeichenoperationen arbeiten in einem Benutzerkoordinatensystem, das
standardmäßig auf den Bereich [0.0 .. 1.0] x [0.0 .. 1.0] skaliert ist.
Gezeichnet wird in einem Einheitsquadrat: Die linke untere Ecke hat die
Koordinaten (0, 0), die rechte obere Ecke (1, 1).
Über setXScale(double, double), setYScale(double, double)
bzw. setScale(double, double) kann das Koordinatensystem angepasst
werden.
Die Stiftfarbe und -stärke werden global gesetzt (ähnlich wie bei StdOut)
und gelten für alle nachfolgenden Zeichenoperationen:
setPenColor(Color), setPenRadius(double).
Text wird mit setFont(Font) konfiguriert.
Standardmäßig wird jede Zeichenoperation sofort sichtbar.
Mit enableDoubleBuffering() werden Zeichenoperationen zunächst in
einen Offscreen-Puffer geschrieben und erst mit show() auf den
Bildschirm übertragen. Das ist insbesondere für Animationen sinnvoll.
StdGraph kann Maus- und Tastatureingaben abfragen, z.B.
mousePressed(), mouseX(), mouseY(),
hasNextKeyTyped(), nextKeyTyped(), keyPressed(int).
Die aktuelle Darstellung kann als PNG oder JPG gespeichert werden
(Format über Dateiendung): save(String).
Hinweis zur Laufzeitumgebung: Unter Linux/Ubuntu können für Menü-Sounds/GTK ggf. zusätzliche Pakete erforderlich sein.
Java-Version: 17 oder höher
- Author:
- Karsten Brodmann (kb@punkt-akademie.de)
-
Method Summary
Modifier and TypeMethodDescriptionvoidCallback des Menüeintrags „Speichern ...“.static voidarc(double x, double y, double radius, double angle1, double angle2) Zeichnet einen Kreisbogen mit Radiusradiusund Zentrum(x, y), vonangle1bisangle2(in Winkelgraden).static voidcircle(double x, double y, double radius) Zeichnet einen Kreis mit dem angegebenen Radius und dem Zentrum bei(x, y).static voidclear()Löscht die Zeichenfläche mit der Standardhintergrundfarbe (weiß).static voidLöscht die Zeichenfläche mit einer angegebenen Hintergrundfarbe.static voidDeaktiviert die Doppelpufferung.static voidellipse(double x, double y, double width, double height) Zeichnet eine Ellipse mit den angegebenen Halbachsen und dem Zentrum bei(x, y).static voidAktiviert die Doppelpufferung.static voidfilledCircle(double x, double y, double radius) Zeichnet einen gefüllten Kreis mit dem angegebenen Radius und dem Zentrum bei(x, y).static voidfilledEllipse(double x, double y, double width, double height) Zeichnet eine gefüllte Ellipse mit den angegebenen Halbachsen und dem Zentrum bei(x, y).static voidfilledPolygon(double[] x, double[] y) Zeichnet ein gefülltes Polygon.static voidfilledRectangle(double x, double y, double halfWidth, double halfHeight) Zeichnet ein gefülltes Rechteck mit Zentrum(x, y).static voidfilledSquare(double x, double y, double halfLength) Zeichnet ein gefülltes Quadrat mit Zentrum(x, y).static FontgetFont()Liefert die aktuell eingestellte Schriftart.static ColorLiefert die aktuell eingestellte Stiftfarbe.static doubleLiefert die aktuell eingestellte Stiftstärke.static booleanPrüft, ob unverarbeitete Tastatureingaben vorhanden sind.static booleankeyPressed(int keycode) Prüft, ob die Taste mit dem angegebenen Keycode aktuell gedrückt ist.voidkeyPressed(@NotNull KeyEvent e) Callback desKeyListener: Taste gedrückt.voidkeyReleased(@NotNull KeyEvent e) Callback desKeyListener: Taste losgelassen.voidCallback desKeyListener: Zeichen getippt.static voidline(double x0, double y0, double x1, double y1) Zeichnet eine Linie zwischen(x0, y0)und(x1, y1).static voidTest-Client.voidDiese Methode kann nicht direkt aufgerufen werden.voidmouseDragged(@NotNull MouseEvent e) Callback desMouseMotionListener: Maus mit gedrückter Taste gezogen.voidDiese Methode kann nicht direkt aufgerufen werden.voidDiese Methode kann nicht direkt aufgerufen werden.voidmouseMoved(@NotNull MouseEvent e) Callback desMouseMotionListener: Maus bewegt (ohne Taste).static booleanGibt zurück, ob aktuell eine Maustaste gedrückt ist.voidmousePressed(@NotNull MouseEvent e) Callback desMouseListener: Maustaste gedrückt.voidCallback desMouseListener: Maustaste losgelassen.static doublemouseX()Gibt die aktuellex-Koordinate des Mauszeigers im Benutzerkoordinatensystem zurück.static doublemouseY()Gibt die aktuelley-Koordinate des Mauszeigers im Benutzerkoordinatensystem zurück.static charLiefert das nächste, noch nicht verarbeitete, getippte Zeichen.static voidpause(int t) Pausiert die Ausführung für die angegebene Anzahl Millisekunden.static voidZeichnet ein Bild mit Mittelpunkt(x, y).static voidZeichnet ein Bild mit Mittelpunkt(x, y), rotiert um den angegebenen Winkel.static voidZeichnen des Bildes mit Zentrum in (x, y), skaliert auf die angegebene Größe.static voidZeichnet ein Bild mit Mittelpunkt(x, y), skaliert auf die angegebene Größe und um den angegebenen Winkel rotiert.static voidpoint(double x, double y) Zeichnet einen Punkt bei(x, y).static voidpolygon(double[] x, double[] y) Zeichnet ein Polygon.static voidrectangle(double x, double y, double halfWidth, double halfHeight) Zeichnet ein Rechteck mit Zentrum(x, y).static voidSpeichert die aktuell sichtbare Darstellung als PNG oder JPG.static voidSetzt die Zeichenfläche auf die Standardgröße (800 x 800 Pixel).static voidsetCanvasSize(int newWidth, int newHeight) Setzt die Größe der Zeichenfläche in Pixeln.static voidsetFont()Setzt die Schriftart auf den Standardwert (SansSerif, 16pt).static voidSetzt die Schriftart für nachfolgende Textausgaben.static voidSetzt die Stiftfarbe auf den Standardwert (schwarz).static voidsetPenColor(int red, int green, int blue) Setzt die Stiftfarbe über RGB-Anteile.static voidsetPenColor(Color color) Setzt die Stiftfarbe.static voidSetzt die Stiftstärke auf den Standardwert (0.002).static voidsetPenRadius(double radius) Setzt die Stiftstärke auf den angegebenen Radius.static voidsetScale()Setztx- undy-Skalierung auf den Standardbereich[0.0 .. 1.0].static voidsetScale(double min, double max) Setzt diex- undy-Skalierung auf den angegebenen Bereich (symmetrische Skalierung).static voidSetzt diex-Skalierung auf den Standardbereich[0.0 .. 1.0].static voidsetXScale(double min, double max) Setzt diex-Skalierung auf den angegebenen Bereich.static voidSetzt diey-Skalierung auf den Standardbereich[0.0 .. 1.0].static voidsetYScale(double min, double max) Setzt diey-Skalierung auf den angegebenen Bereich.static voidshow()Überträgt den aktuellen Offscreen-Puffer in den sichtbaren Puffer und aktualisiert das Fenster.static voidshow(int t) Komfortfunktion für Animationen:show(), kurze Pause, dann wieder Doppelpufferung aktivieren.static voidsquare(double x, double y, double halfLength) Zeichnet ein Quadrat mit Zentrum(x, y).static voidGibt Text zentriert bei(x, y)aus.static voidGibt Text zentriert bei(x, y)aus und rotiert ihn um den angegebenen Winkel.static voidGibt Text linksbündig bei(x, y)aus.static voidGibt Text rechtsbündig bei(x, y)aus.
-
Method Details
-
setCanvasSize
public static void setCanvasSize()Setzt die Zeichenfläche auf die Standardgröße (800 x 800 Pixel).Die Zeichenfläche wird neu initialisiert. Dabei werden Koordinatensystem, Stiftstärke, Stiftfarbe und Schriftart auf Standardwerte zurückgesetzt.
-
setCanvasSize
public static void setCanvasSize(int newWidth, int newHeight) Setzt die Größe der Zeichenfläche in Pixeln.Die Zeichenfläche wird neu initialisiert. Dabei werden Koordinatensystem, Stiftstärke, Stiftfarbe und Schriftart auf Standardwerte zurückgesetzt. Im Normalfall wird diese Methode einmalig zu Beginn eines Programms aufgerufen.
- Parameters:
newWidth- Breite der Zeichenfläche in Pixeln (muss> 0sein)newHeight- Höhe der Zeichenfläche in Pixeln (muss> 0sein)- Throws:
IllegalArgumentException- wennnewWidth <= 0odernewHeight <= 0
-
setXScale
public static void setXScale()Setzt diex-Skalierung auf den Standardbereich[0.0 .. 1.0]. -
setYScale
public static void setYScale()Setzt diey-Skalierung auf den Standardbereich[0.0 .. 1.0]. -
setScale
public static void setScale()Setztx- undy-Skalierung auf den Standardbereich[0.0 .. 1.0]. -
setXScale
public static void setXScale(double min, double max) Setzt diex-Skalierung auf den angegebenen Bereich.- Parameters:
min- untere Grenze derx-Achsemax- obere Grenze derx-Achse- Throws:
IllegalArgumentException- wennminodermaxNaNoder unendlich istIllegalArgumentException- wennmax == min
-
setYScale
public static void setYScale(double min, double max) Setzt diey-Skalierung auf den angegebenen Bereich.- Parameters:
min- untere Grenze dery-Achsemax- obere Grenze dery-Achse- Throws:
IllegalArgumentException- wennminodermaxNaNoder unendlich istIllegalArgumentException- wennmax == min
-
setScale
public static void setScale(double min, double max) Setzt diex- undy-Skalierung auf den angegebenen Bereich (symmetrische Skalierung).- Parameters:
min- untere Grenze der Achsemax- obere Grenze der Achse- Throws:
IllegalArgumentException- wennminodermaxNaNoder unendlich istIllegalArgumentException- wennmax == min
-
clear
public static void clear()Löscht die Zeichenfläche mit der Standardhintergrundfarbe (weiß). -
clear
Löscht die Zeichenfläche mit einer angegebenen Hintergrundfarbe.- Parameters:
color- Hintergrundfarbe- Throws:
IllegalArgumentException- wenncolor == null
-
getPenRadius
public static double getPenRadius()Liefert die aktuell eingestellte Stiftstärke.- Returns:
- aktueller Stiftradius
-
setPenRadius
public static void setPenRadius()Setzt die Stiftstärke auf den Standardwert (0.002).Die Stiftstärke ist unabhängig von der Achsenskalierung. Ein Radius von
0.0führt beim Zeichnen von Punkten effektiv zu einzelnen Pixeln. -
setPenRadius
public static void setPenRadius(double radius) Setzt die Stiftstärke auf den angegebenen Radius.- Parameters:
radius- Stiftradius (muss>= 0sein)- Throws:
IllegalArgumentException- wennradiusnegativ,NaNoder unendlich ist
-
getPenColor
Liefert die aktuell eingestellte Stiftfarbe.- Returns:
- aktuelle Stiftfarbe
-
setPenColor
public static void setPenColor()Setzt die Stiftfarbe auf den Standardwert (schwarz). -
setPenColor
Setzt die Stiftfarbe.- Parameters:
color- neue Stiftfarbe- Throws:
IllegalArgumentException- wenncolor == null
-
setPenColor
public static void setPenColor(int red, int green, int blue) Setzt die Stiftfarbe über RGB-Anteile.- Parameters:
red- Rotanteil (0..255)green- Grünanteil (0..255)blue- Blauanteil (0..255)- Throws:
IllegalArgumentException- wenn ein Farbanteil außerhalb0..255liegt
-
getFont
Liefert die aktuell eingestellte Schriftart.- Returns:
- aktuelle Schriftart
-
setFont
public static void setFont()Setzt die Schriftart auf den Standardwert (SansSerif, 16pt). -
setFont
Setzt die Schriftart für nachfolgende Textausgaben.- Parameters:
fontfamily- neue Schriftart- Throws:
IllegalArgumentException- wennfontfamily == null
-
line
public static void line(double x0, double y0, double x1, double y1) Zeichnet eine Linie zwischen(x0, y0)und(x1, y1).- Parameters:
x0-x-Koordinate des ersten Endpunktsy0-y-Koordinate des ersten Endpunktsx1-x-Koordinate des zweiten Endpunktsy1-y-Koordinate des zweiten Endpunkts- Throws:
IllegalArgumentException- wenn eine KoordinateNaNoder unendlich ist
-
point
public static void point(double x, double y) Zeichnet einen Punkt bei(x, y).Der Punkt ist ein gefüllter Kreis, dessen Radius der Stiftstärke entspricht. Um ein einzelnes Pixel zu zeichnen, muss die Stiftstärke vorher auf
0gesetzt werden.- Parameters:
x-x-Koordinate des Punktesy-y-Koordinate des Punktes- Throws:
IllegalArgumentException- fallsxoderyNaN oder unendlich sind
-
circle
public static void circle(double x, double y, double radius) Zeichnet einen Kreis mit dem angegebenen Radius und dem Zentrum bei(x, y).- Parameters:
x-x-Koordinate des Kreiszentrumsy-y-Koordinate des Kreiszentrumsradius- Kreisradius- Throws:
IllegalArgumentException- fallsradiusnegativ istIllegalArgumentException- falls ein Argument NaN oder unendlich ist
-
filledCircle
public static void filledCircle(double x, double y, double radius) Zeichnet einen gefüllten Kreis mit dem angegebenen Radius und dem Zentrum bei(x, y).- Parameters:
x-x-Koordinate des Kreiszentrumsy-y-Koordinate des Kreiszentrumsradius- Kreisradius- Throws:
IllegalArgumentException- fallsradiusnegativ istIllegalArgumentException- falls ein Argument NaN oder unendlich ist
-
ellipse
public static void ellipse(double x, double y, double width, double height) Zeichnet eine Ellipse mit den angegebenen Halbachsen und dem Zentrum bei(x, y).- Parameters:
x-x-Koordinate des Ellipsenzentrumsy-y-Koordinate des Ellipsenzentrumswidth- Halbachse inx-Richtungheight- Halbachse iny-Richtung- Throws:
IllegalArgumentException- fallswidthoderheightnegativ istIllegalArgumentException- falls ein Argument NaN oder unendlich ist
-
filledEllipse
public static void filledEllipse(double x, double y, double width, double height) Zeichnet eine gefüllte Ellipse mit den angegebenen Halbachsen und dem Zentrum bei(x, y).- Parameters:
x-x-Koordinate des Ellipsenzentrumsy-y-Koordinate des Ellipsenzentrumswidth- Halbachse inx-Richtungheight- Halbachse iny-Richtung- Throws:
IllegalArgumentException- fallswidthoderheightnegativ istIllegalArgumentException- falls ein Argument NaN oder unendlich ist
-
arc
public static void arc(double x, double y, double radius, double angle1, double angle2) Zeichnet einen Kreisbogen mit Radiusradiusund Zentrum(x, y), vonangle1bisangle2(in Winkelgraden).- Parameters:
x-x-Koordinate des Kreiszentrumsy-y-Koordinate des Kreiszentrumsradius- Kreisradiusangle1- Startwinkel:0bedeutet Start bei „3 Uhr“angle2- Endwinkel: z.B. für einen 90-Grad-Bogenangle1 + 90- Throws:
IllegalArgumentException- fallsradiusnegativ istIllegalArgumentException- falls ein Argument NaN oder unendlich ist
-
square
public static void square(double x, double y, double halfLength) Zeichnet ein Quadrat mit Zentrum(x, y).- Parameters:
x-x-Koordinate des Quadratzentrumsy-y-Koordinate des QuadratzentrumshalfLength- Hälfte der Seitenlänge- Throws:
IllegalArgumentException- fallshalfLengthnegativ istIllegalArgumentException- falls ein Argument NaN oder unendlich ist
-
filledSquare
public static void filledSquare(double x, double y, double halfLength) Zeichnet ein gefülltes Quadrat mit Zentrum(x, y).- Parameters:
x-x-Koordinate des Quadratzentrumsy-y-Koordinate des QuadratzentrumshalfLength- Hälfte der Seitenlänge- Throws:
IllegalArgumentException- fallshalfLengthnegativ istIllegalArgumentException- falls ein Argument NaN oder unendlich ist
-
rectangle
public static void rectangle(double x, double y, double halfWidth, double halfHeight) Zeichnet ein Rechteck mit Zentrum(x, y).- Parameters:
x-x-Koordinate des Rechteckzentrumsy-y-Koordinate des RechteckzentrumshalfWidth- Hälfte der RechtecksbreitehalfHeight- Hälfte der Rechteckshöhe- Throws:
IllegalArgumentException- fallshalfWidthoderhalfHeightnegativ istIllegalArgumentException- falls ein Argument NaN oder unendlich ist
-
filledRectangle
public static void filledRectangle(double x, double y, double halfWidth, double halfHeight) Zeichnet ein gefülltes Rechteck mit Zentrum(x, y).- Parameters:
x-x-Koordinate des Rechteckzentrumsy-y-Koordinate des RechteckzentrumshalfWidth- Hälfte der RechtecksbreitehalfHeight- Hälfte der Rechteckshöhe- Throws:
IllegalArgumentException- fallshalfWidthoderhalfHeightnegativ istIllegalArgumentException- falls ein Argument NaN oder unendlich ist
-
polygon
public static void polygon(double[] x, double[] y) Zeichnet ein Polygon.- Parameters:
x- Array derx-Koordinateny- Array dery-Koordinaten
-
filledPolygon
public static void filledPolygon(double[] x, double[] y) Zeichnet ein gefülltes Polygon.- Parameters:
x- Array derx-Koordinateny- Array dery-Koordinaten
-
picture
Zeichnet ein Bild mit Mittelpunkt(x, y).Unterstützte Formate sind u.a. PNG, JPG/JPEG und GIF (abhängig von
ImageIO).- Parameters:
x-x-Koordinate des Bildmittelpunktsy-y-Koordinate des Bildmittelpunktsfilename- Dateiname oder Pfad (auch Ressourcenpfad möglich)- Throws:
IllegalArgumentException- wennfilename == nullIllegalArgumentException- wennxoderyNaNoder unendlich istIllegalArgumentException- wenn das Bild nicht geladen werden kann
-
picture
Zeichnet ein Bild mit Mittelpunkt(x, y), rotiert um den angegebenen Winkel.- Parameters:
x-x-Koordinate des Bildmittelpunktsy-y-Koordinate des Bildmittelpunktsfilename- Dateiname oder Pfad (auch Ressourcenpfad möglich)angle- Drehwinkel in Winkelgraden (gegen den Uhrzeigersinn)- Throws:
IllegalArgumentException- wennfilename == nullIllegalArgumentException- wennx,yoderangleNaN oder unendlich istIllegalArgumentException- wenn das Bild nicht geladen werden kann
-
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 Bildzentrumsy- y-Koordinate des Bildzentrumsfilename- Dateiname des BildesscaledWidth- Breite des Bildes (in Bildschirmkoordinaten)scaledHeight- Höhe des Bildes (in Bildschirmkoordinaten)- Throws:
IllegalArgumentException- fallsscaledWidthoderscaledHeightnegativIllegalArgumentException- falls die angegebene Bilddatei ungültigIllegalArgumentException- fallsxoderyNaN oder unendlich istIllegalArgumentException- fallsfilenamenullist
-
picture
public static void picture(double x, double y, String filename, double scaledWidth, double scaledHeight, double angle) Zeichnet ein Bild mit Mittelpunkt(x, y), skaliert auf die angegebene Größe und um den angegebenen Winkel rotiert.Skalierung und Rotation
Unterstützte BildformatescaledWidthundscaledHeightwerden in Benutzerkoordinaten angegeben (also im selben Koordinatensystem wiesetXScale(double, double)undsetYScale(double, double)). Intern werden diese Werte in Pixel umgerechnet. Die Rotation erfolgt um den Bildmittelpunkt.Unterstützt werden u.a. PNG, JPG/JPEG und GIF (abhängig von
ImageIO).- Parameters:
x-x-Koordinate des Bildmittelpunktsy-y-Koordinate des Bildmittelpunktsfilename- Dateiname, Pfad oder Ressourcenpfad (siehepicture(double, double, String))scaledWidth- Breite des Bildes (in Benutzerkoordinaten, muss>= 0sein)scaledHeight- Höhe des Bildes (in Benutzerkoordinaten, muss>= 0sein)angle- Drehwinkel in Winkelgraden (gegen den Uhrzeigersinn)- Throws:
IllegalArgumentException- wennfilename == nullIllegalArgumentException- wennx,yoderangleNaNoder unendlich istIllegalArgumentException- wennscaledWidthoderscaledHeightnegativ istIllegalArgumentException- wenn das Bild nicht geladen werden kann
-
text
Gibt Text zentriert bei(x, y)aus.Ausrichtung
Der Text wird horizontal so platziert, dass sein Mittelpunkt auf
xliegt. Vertikal wird die Basislinie so gewählt, dass der Text visuell umyherum zentriert wirkt (unter Verwendung vonFontMetrics.getDescent()).- Parameters:
x-x-Koordinate der Textmittey-y-Koordinate der Textmittetext- auszugebende Zeichenkette- Throws:
IllegalArgumentException- wenntext == nullIllegalArgumentException- wennxoderyNaNoder unendlich ist
-
text
Gibt Text zentriert bei(x, y)aus und rotiert ihn um den angegebenen Winkel.Rotation
Die Rotation erfolgt um den Punkt
(x, y)in Bildschirmkoordinaten.- Parameters:
x-x-Koordinate der Textmittey-y-Koordinate der Textmittetext- auszugebende Zeichenketteangle- Rotation in Winkelgraden (gegen den Uhrzeigersinn)- Throws:
IllegalArgumentException- wenntext == nullIllegalArgumentException- wennx,yoderangleNaNoder unendlich ist
-
textLeft
Gibt Text linksbündig bei(x, y)aus.Ausrichtung
xbezeichnet die linke Textkante.yist (wie beitext(double, double, String)) so gewählt, dass der Text optisch umyherum zentriert wirkt.- Parameters:
x-x-Koordinate der linken Textkantey-y-Koordinate der Textpositiontext- auszugebende Zeichenkette- Throws:
IllegalArgumentException- wenntext == nullIllegalArgumentException- wennxoderyNaNoder unendlich ist
-
textRight
Gibt Text rechtsbündig bei(x, y)aus.Ausrichtung
xbezeichnet die rechte Textkante.yist (wie beitext(double, double, String)) so gewählt, dass der Text optisch umyherum zentriert wirkt.- Parameters:
x-x-Koordinate der rechten Textkantey-y-Koordinate der Textpositiontext- auszugebende Zeichenkette- Throws:
IllegalArgumentException- wenntext == nullIllegalArgumentException- wennxoderyNaNoder unendlich ist
-
show
public static void show(int t) Komfortfunktion für Animationen:show(), kurze Pause, dann wieder Doppelpufferung aktivieren.Typischer Einsatz
Sinnvoll in Animationsschleifen: Offscreen zeichnen, anzeigen, warten, dann weiterzeichnen (wieder im Offscreen-Puffer).
- Parameters:
t- Pause in Millisekunden (muss>= 0sein)- Throws:
IllegalArgumentException- wennt < 0
-
pause
public static void pause(int t) Pausiert die Ausführung für die angegebene Anzahl Millisekunden.- Parameters:
t- Pause in Millisekunden (muss>= 0sein)- Throws:
IllegalArgumentException- wennt < 0
-
show
public static void show()Überträgt den aktuellen Offscreen-Puffer in den sichtbaren Puffer und aktualisiert das Fenster.Doppelpufferung
Bei aktivierter Doppelpufferung ist
show()der zentrale Schritt, um das bisher unsichtbar gezeichnete Bild sichtbar zu machen. -
enableDoubleBuffering
public static void enableDoubleBuffering()Aktiviert die Doppelpufferung.Wirkung
Zeichenoperationen werden zunächst nur in
offscreenImageausgeführt und erst übershow()sichtbar gemacht. -
disableDoubleBuffering
public static void disableDoubleBuffering()Deaktiviert die Doppelpufferung.Wirkung
Jede Zeichenoperation wird sofort auf den Bildschirm übertragen.
-
save
Speichert die aktuell sichtbare Darstellung als PNG oder JPG.Dateiformat
Das Dateiformat wird über die Endung bestimmt:
.pngoder.jpg. Bei JPEG wird der Alphakanal verworfen (Hintergrund wird weiß).- Parameters:
filename- Dateiname inkl. Endung- Throws:
IllegalArgumentException- wennfilename == null
-
actionPerformed
Callback des Menüeintrags „Speichern ...“.Hinweis
Das Speichern ruft intern
save(String)auf. Die Endung der gewählten Datei muss.pngoder.jpgsein.- Specified by:
actionPerformedin interfaceActionListener
-
mousePressed
public static boolean mousePressed()Gibt zurück, ob aktuell eine Maustaste gedrückt ist.Thread-Sicherheit
Die Werte werden im AWT-Event-Dispatch-Thread aktualisiert und über
mouseLocksynchronisiert.- Returns:
truewenn eine Maustaste gedrückt ist, sonstfalse
-
mouseX
public static double mouseX()Gibt die aktuellex-Koordinate des Mauszeigers im Benutzerkoordinatensystem zurück.- Returns:
x-Koordinate des Mauszeigers
-
mouseY
public static double mouseY()Gibt die aktuelley-Koordinate des Mauszeigers im Benutzerkoordinatensystem zurück.- Returns:
y-Koordinate des Mauszeigers
-
mouseClicked
Diese Methode kann nicht direkt aufgerufen werden.- Specified by:
mouseClickedin interfaceMouseListener
-
mouseEntered
Diese Methode kann nicht direkt aufgerufen werden.- Specified by:
mouseEnteredin interfaceMouseListener
-
mouseExited
Diese Methode kann nicht direkt aufgerufen werden.- Specified by:
mouseExitedin interfaceMouseListener
-
mousePressed
Callback desMouseListener: Maustaste gedrückt.Koordinaten
Die Mausposition wird von Pixelkoordinaten in Benutzerkoordinaten umgerechnet.
- Specified by:
mousePressedin interfaceMouseListener- Parameters:
e- Mausereignis
-
mouseReleased
Callback desMouseListener: Maustaste losgelassen.- Specified by:
mouseReleasedin interfaceMouseListener
-
mouseDragged
Callback desMouseMotionListener: Maus mit gedrückter Taste gezogen.- Specified by:
mouseDraggedin interfaceMouseMotionListener- Parameters:
e- Mausereignis
-
mouseMoved
Callback desMouseMotionListener: Maus bewegt (ohne Taste).- Specified by:
mouseMovedin interfaceMouseMotionListener- Parameters:
e- Mausereignis
-
hasNextKeyTyped
public static boolean hasNextKeyTyped()Prüft, ob unverarbeitete Tastatureingaben vorhanden sind.Verwendung
In Kombination mit
nextKeyTyped()kann der Client eine einfache Eingabeschlange abarbeiten.- Returns:
true, wenn noch unverarbeitete Zeichen in der Warteschlange sind, sonstfalse
-
nextKeyTyped
public static char nextKeyTyped()Liefert das nächste, noch nicht verarbeitete, getippte Zeichen.Wichtig
Es werden nur „normale“ Zeichen erfasst. Funktionstasten (z. B. F1), Cursortasten und Modifizierer (z. B. CTRL) werden nicht als Zeichen in diese Warteschlange geschrieben.
- Returns:
- nächstes Zeichen aus der Warteschlange
- Throws:
NoSuchElementException- wenn keine Zeichen mehr im Puffer sind
-
keyPressed
public static boolean keyPressed(int keycode) Prüft, ob die Taste mit dem angegebenen Keycode aktuell gedrückt ist.Keycodes
Diese Methode arbeitet mit
KeyEvent-Keycodes (physische Tasten) und eignet sich daher auch für Funktions- und Modifizierertasten.- Parameters:
keycode- Keycode der zu prüfenden Taste- Returns:
truewenn die Taste aktuell gedrückt ist, sonstfalse
-
keyTyped
Callback desKeyListener: Zeichen getippt.- Specified by:
keyTypedin interfaceKeyListener
-
keyPressed
Callback desKeyListener: Taste gedrückt.- Specified by:
keyPressedin interfaceKeyListener
-
keyReleased
Callback desKeyListener: Taste losgelassen.- Specified by:
keyReleasedin interfaceKeyListener
-
main
Test-Client.Hinweis
Dieser Client dient nur zur schnellen visuellen Prüfung der Zeichenroutinen und ist nicht als API-Beispiel für produktiven Einsatz gedacht.
- Parameters:
args- - nicht genutzt
-