Halli Hallo,
ich bin grade dabei mit Grafik 2d zu experimentieren und zu lernen, und versuche dies anhand eines Beispiels, bzw durch die erweiterung eines gegebenen beispieles. Ich möchte hinzufügen, dass ich durch eine methode oder auch schon bei der konstruktion das Rechteck farblich ausfüllen kann.
ich benutze bluej!
Hier mein bisheriger code. ich habe es schon mit befehlen wie:
g2.setPaint(Color.red),
g2.fill(p);
versucht, jedoch wusste ich nicht was ich für g2 und p einsetzen sollte. hab dementsprechend rumprobiert, einmal als methode und bei gibAktuelleFigur(); und hab sämtliche variablen die passen könnten eingesetzt.
hoffentlich kann mir jemand helfen,
lg arxi
Update#1
im irc habe ich mit Xandro geschnackt, welcher mir folgenden code empfahl:
wenn ich die methode jetzt einsetze und ausführe verlangt er( das programm, bluej), dass ich einen wert eingebe.
ich weiß nicht weiter, weil das was er mir gegeben hat sollte eigtl klappen
[/code]
ich bin grade dabei mit Grafik 2d zu experimentieren und zu lernen, und versuche dies anhand eines Beispiels, bzw durch die erweiterung eines gegebenen beispieles. Ich möchte hinzufügen, dass ich durch eine methode oder auch schon bei der konstruktion das Rechteck farblich ausfüllen kann.
ich benutze bluej!
Hier mein bisheriger code. ich habe es schon mit befehlen wie:
g2.setPaint(Color.red),
g2.fill(p);
versucht, jedoch wusste ich nicht was ich für g2 und p einsetzen sollte. hab dementsprechend rumprobiert, einmal als methode und bei gibAktuelleFigur(); und hab sämtliche variablen die passen könnten eingesetzt.
hoffentlich kann mir jemand helfen,
lg arxi
Code:
import java.awt.Shape;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Line2D;
import java.awt.geom.AffineTransform;
import java.awt.*;
public class Bett
{
private int xPosition;
private int yPosition;
private int orientierung;
private String farbe;
private boolean istSichtbar;
private int breite;
private int tiefe;
/**
* Erzeuge ein neues Bett mit einer Standardfarbe und Standardgroesse
* an einer Standardposition. (Standardkonstruktor)
*/
public Bett() {
xPosition = 60;
yPosition = 20;
farbe = "schwarz";
orientierung = 0;
istSichtbar = false;
breite = 140;
tiefe = 200;
}
/**
* Berechnet das zu zeichnende Shape anhand der gegebenen Daten
* [ Zum Anzeigen der Attributwerte über Inspect muss hier die Sichtbarkeit
* auf public gesetzt werden. ]
*/
private Shape gibAktuelleFigur() {
// einen GeneralPath definieren
GeneralPath bett = new GeneralPath();
Rectangle2D rahmen = new Rectangle2D.Double(0, 0, breite, tiefe);
bett.append(rahmen,false);
// transformieren:
AffineTransform t = new AffineTransform();
t.translate(xPosition, yPosition);
Rectangle2D umriss = bett.getBounds2D();
t.rotate(Math.toRadians(orientierung),umriss.getX()+umriss.getWidth()/2,umriss.getY()+umriss.getHeight()/2);
return t.createTransformedShape(bett);
}
/**
* Mache dieses Objekt sichtbar. Wenn es bereits sichtbar ist, tue nichts.
*/
public void zeige() {
if (!istSichtbar) {
istSichtbar = true;
zeichne();
}
}
/**
* Mache dieses Objekt unsichtbar. Wenn es bereits unsichtbar ist, tue nichts.
*/
public void verberge() {
loesche(); // "tue nichts" wird in loesche() abgefangen.
istSichtbar = false;
}
/**
* Drehe auf den angegebenen Winkel
*/
public void dreheAuf(int neuerWinkel) {
loesche();
orientierung = neuerWinkel;
zeichne();
}
/**
* Bewege dieses Objekt horizontal um 'entfernung' Bildschirmpunkte.
*/
public void bewegeHorizontal(int entfernung) {
loesche();
xPosition += entfernung;
zeichne();
}
/**
* Bewege dieses objekt vertikal um 'entfernung' Bildschirmpunkte.
*/
public void bewegeVertikal(int entfernung) {
loesche();
yPosition += entfernung;
zeichne();
}
/**
* Aendere die Farbe dieses Objektes in 'neueFarbe'.
* Gueltige Angaben sind "rot", "gelb", "blau", "gruen",
* "lila" und "schwarz".
*/
public void aendereFarbe(String neueFarbe) {
loesche();
farbe = neueFarbe;
zeichne();
}
/**
* Zeichne dieses Objekt mit seinen aktuellen Werten auf den Bildschirm.
*/
private void zeichne() {
if (istSichtbar) {
Shape figur = gibAktuelleFigur();
Leinwand leinwand = Leinwand.gibLeinwand();
leinwand.zeichne (
this, // leinwand kennt das Objekt
farbe, // definiert seine Zeichenfarbe
figur); // definiert seinen grafischen Aspekt
leinwand.warte(10);
}
}
/**
* Loesche dieses Objekt vom Bildschirm.
*/
private void loesche() {
if (istSichtbar){
Leinwand leinwand = Leinwand.gibLeinwand();
leinwand.entferne(this);
}
}
}
Update#1
im irc habe ich mit Xandro geschnackt, welcher mir folgenden code empfahl:
Code:
public void paint(Graphics g) {
Graphics2D graphics2 = (Graphics2D) g;
Rectangle2D rectangle = new Rectangle2D.Float(100, 100, 240, 160);
graphics2.draw(rectangle);
graphics2.setPaint(Color.RED);
graphics2.fill(rectangle);
}
wenn ich die methode jetzt einsetze und ausführe verlangt er( das programm, bluej), dass ich einen wert eingebe.
ich weiß nicht weiter, weil das was er mir gegeben hat sollte eigtl klappen
[/code]