Ahoi!
Ich habe vorhin von jmd etwas Code geschickt bekommen, bei dem ich einen Fehler beheben soll. Leider konnte ich diesen nicht beheben. Das Problem ist, dass k.setColor(farbe) in Zeile 37 nicht funktioniert.
Ich habe vor kurzem hier im Forum gelesen, dass getGraphics() fast immer die falsche Lösung sei (wenn ich mich richtig erinnere hat das Lectron geschrieben).
Liegt das Problem wirklich daran oder nicht?
Wann kann getGraphics() verwendet werden? Habe leider beim Googlen nie wirklich einen Beitrag gefunden darüber, wann man getGraphics() verwenden soll/ kann.
Hier mal den Code:
[Java]
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class KreiseKlicken extends Applet implements MouseListener {
public void init() {
addMouseListener(this);
}
public void paint(Graphics g) {
g.drawString("Quadrate zeichnen mit Klicken",10,10);
}
public void mousePressed(MouseEvent e) {
// Maus-Koordinaten abfragen
int xMouse = e.getX();
int yMouse = e.getY();
// Graphics Objekt holen
Graphics g = getGraphics();
// hier int-Zufallszahl zwischen 10 und 50 ausprogrammieren!
int groesse = (int)(10+Math.random()*40);
Color zufallsfarbe = new Color((int)Math.random()*256, (int)Math.random()*256,
(int)Math.random()*256);
zeichneQuadratMitDiagonalen(xMouse, yMouse, groesse,g, zufallsfarbe);
}
/* Die folgenden 4 Methoden werden als leere Methoden definiert. Sie müssen
im Applet definiert werden, da sie im Interface "MouseListener" spezifiziert
sind */
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
// Methode zeichneQuadratMitDiagonalen selber ausprogrammieren
// der angeklickte Punkt P(x,y) soll der Diagonalenschnittpunkt sein
// Farbe von Quadrat und Diagonalen gleich, aber zufällig
public void zeichneQuadratMitDiagonalen(int x, int y, int kantenlaenge, Graphics k, Color farbe) {
k.setColor(farbe);
k.drawRect(x-kantenlaenge/2, y-kantenlaenge/2,kantenlaenge, kantenlaenge);
k.drawLine(x-kantenlaenge/2, y-kantenlaenge/2,x+kantenlaenge/2, y+kantenlaenge/2);
k.drawLine(x-kantenlaenge/2, y+kantenlaenge/2,x+kantenlaenge/2, y-kantenlaenge/2);
}
}
[/Java]
Ich habe vorhin von jmd etwas Code geschickt bekommen, bei dem ich einen Fehler beheben soll. Leider konnte ich diesen nicht beheben. Das Problem ist, dass k.setColor(farbe) in Zeile 37 nicht funktioniert.
Ich habe vor kurzem hier im Forum gelesen, dass getGraphics() fast immer die falsche Lösung sei (wenn ich mich richtig erinnere hat das Lectron geschrieben).
Liegt das Problem wirklich daran oder nicht?
Wann kann getGraphics() verwendet werden? Habe leider beim Googlen nie wirklich einen Beitrag gefunden darüber, wann man getGraphics() verwenden soll/ kann.
Hier mal den Code:
[Java]
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class KreiseKlicken extends Applet implements MouseListener {
public void init() {
addMouseListener(this);
}
public void paint(Graphics g) {
g.drawString("Quadrate zeichnen mit Klicken",10,10);
}
public void mousePressed(MouseEvent e) {
// Maus-Koordinaten abfragen
int xMouse = e.getX();
int yMouse = e.getY();
// Graphics Objekt holen
Graphics g = getGraphics();
// hier int-Zufallszahl zwischen 10 und 50 ausprogrammieren!
int groesse = (int)(10+Math.random()*40);
Color zufallsfarbe = new Color((int)Math.random()*256, (int)Math.random()*256,
(int)Math.random()*256);
zeichneQuadratMitDiagonalen(xMouse, yMouse, groesse,g, zufallsfarbe);
}
/* Die folgenden 4 Methoden werden als leere Methoden definiert. Sie müssen
im Applet definiert werden, da sie im Interface "MouseListener" spezifiziert
sind */
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
// Methode zeichneQuadratMitDiagonalen selber ausprogrammieren
// der angeklickte Punkt P(x,y) soll der Diagonalenschnittpunkt sein
// Farbe von Quadrat und Diagonalen gleich, aber zufällig
public void zeichneQuadratMitDiagonalen(int x, int y, int kantenlaenge, Graphics k, Color farbe) {
k.setColor(farbe);
k.drawRect(x-kantenlaenge/2, y-kantenlaenge/2,kantenlaenge, kantenlaenge);
k.drawLine(x-kantenlaenge/2, y-kantenlaenge/2,x+kantenlaenge/2, y+kantenlaenge/2);
k.drawLine(x-kantenlaenge/2, y+kantenlaenge/2,x+kantenlaenge/2, y-kantenlaenge/2);
}
}
[/Java]