Java: Überschreiben der paint()-Methode
Es ging bestimmt einigen schon durch den Kopf, wie schaffe ich es Dinge auf die Benutzeroberfläche zu zeichnen z.B. einen Strich ein Kreis oder gar ein kleines Paint für zwischen durch.
Die Antwort hierfür ist: paint()
Die paint()-Methode verwaltet alles was mit dem Zeichnen des Fenster zu tun hat und wenn wir diese überschreiben bzw. erweitern, können wir somit unseren eigenen Inhalt darauf zeichnen.
Ich habe hier eine GameMap-Klasse als JPanel, welche als Map für ein 2D Spiel dienen könnte:
super.METHODENNAME(); ruft die Methode der Oberklasse auf.
Als erstes, möchte ich nun die Anti-Aliasing Option aktivieren dies geschieht mit folgender Zeile:
Um nun eine Bilddatei zu laden können wir die Funktion drawImage verwenden.
Es gibt auch die Möglichkeit einen String auf das Panel zu "zeichnen" mit
Die Antwort hierfür ist: paint()
Die paint()-Methode verwaltet alles was mit dem Zeichnen des Fenster zu tun hat und wenn wir diese überschreiben bzw. erweitern, können wir somit unseren eigenen Inhalt darauf zeichnen.
Ich habe hier eine GameMap-Klasse als JPanel, welche als Map für ein 2D Spiel dienen könnte:
public class GameMap extends JPanel{
public GameMap(){
super(null);
setPreferredSize(new Dimension(800, 600));
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D gr = (Graphics2D) g;
// Graphics 2D ermöglicht es uns Grafiken etc. (eben alles was mit 2D zu tun hat)
// zu zeichnen und hinzuzufügen. Es besteht auch die Möglichkeit "Anti-Aliasing" zu aktivieren
}
}
Als kurze Erklärung: super(); ruft den Konstruktor der Oberklasse auf also der Klasse von der wir geerbt haben. super.METHODENNAME(); ruft die Methode der Oberklasse auf.
Als erstes, möchte ich nun die Anti-Aliasing Option aktivieren dies geschieht mit folgender Zeile:
gr.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Dadurch können wir nun hübsche Kreise zeichnen, welche nicht "eckig" sind. Sondern eine schöne Runde Kante besitzen.Um nun eine Bilddatei zu laden können wir die Funktion drawImage verwenden.
Es gibt auch die Möglichkeit einen String auf das Panel zu "zeichnen" mit
gr.drawString("TEST", xKoordinate, yKoordinate);
Kommentare
Kommentar veröffentlichen