# Rechteck grafisch ausgeben (2D)



## Hakan (27. Jun 2010)

Guten Abend,

bin dabei java zu erlernen (Neuling) und muss mit netbeans arbeiten. Meine Hausaufgabe besteht darin ein Rechteck zu erzeugen mit einer grafischen Ausgabe. Bis jetzt habe ich nur eine normale Ausgabe. 
siehe hier:

```
[0,0; 0,0]
[1,2; 13,15]
[3,0; 13,0]
false
[1,18; 13,15]
```
Zusätzlich sollte man DrawableRect.java, ColoredRect.java, SecondApplet.java mit dem Programm einbinden. Habe ich auch gemacht, aber was ich nicht weiß ist, wie dadurch eine grafische Ausgabe zustande kommt. Habe versucht und versucht, aber nicht hinbekommen. Wäre über eure Hilfe sehr dankbar. 
*
Rechteck.java*

```
package rechteck;

public class Rechteck {
    // These are the data fields of the class
    public int x1, y1, width, height;

    /**
    * Erzeugt ein neues Exemplar vom Rechteck mit den Uebergebenen Werten.
    */
    public Rechteck(int x1, int y1, int x2, int y2) {
        this.x1 = x1;
        this.y1 = y1;
        this.width = x2;
        this.height = y2;
    }
     /**
     * Erzeugung von Rechtecken mit unterschiedlicher Breite und Hoehe.
     * Es wird ueberprueft das je ein positiver Wert vorliegt.
     */
    public Rechteck(int width, int height)
    {
        this(0, 0, width, height);
    }
    /**
     * Erzeugt ein neues Exemplar vom Rechteck, wobei alle Werte auf null gesetzt werden.
     */
    public Rechteck()
    {
        this(0, 0, 0, 0);
    }
    /**
     * Verschiebt das Rechteck an den durch x und y bezeichneten Punkt.
     */
    public void move(int deltax, int deltay)
    {
        x1 += deltax; width += deltax;
        y1 += deltay; height += deltay;
    }

    /**
     * Liefert true, wenn der durch x und y bezeichnete Punkt innerhalb des Rechtecks liegt, sonst false.
     */
    public boolean isInside(int x, int y)
    {
        return ((x >= x1)&& (x <= width)&& (y >= y1)&& (y <= height));
    }

    /**
     * Liefert das kleinste Rechteck zurueck, das dieses Rechteck und r vollstaendig enthealt.
     */
    public Rechteck union(Rechteck r)
    {
        return new Rechteck((this.x1 < r.x1) ? this.x1 : r.x1,
                            (this.y1 < r.y1) ? this.y1 : r.y1,
                            (this.width > r.width) ? this.width : r.width,
                            (this.height > r.height) ? this.height : r.height);
    }

    /**
     * Liefert den Ueberschneidungsbereich dieses Rechtecks mit r.
     * Falls kein gemeinsamer Bereich existiert, ergibt sich ein Rechteck,
     * das die Luecke zwischen den beiden Rechtecken buendig ausfuellt.
     */
    public Rechteck intersection(Rechteck r)
    {
        Rechteck Ergebnis =  new Rechteck((this.x1 > r.x1) ? this.x1 : r.x1,
                            (this.y1 > r.y1) ? this.y1 : r.y1,
                            (this.width < r.width) ? this.width : r.width,
                            (this.height < r.height) ? this.height : r.height);
        if (Ergebnis.x1 > Ergebnis.width) { Ergebnis.x1 = Ergebnis.width = 0; }
        if (Ergebnis.y1 > Ergebnis.height) { Ergebnis.y1 = Ergebnis.height = 0; }
        return Ergebnis;
    }

    /**
     *Liefert einen String, der die Koordinaten sowie die Breite und die Hoehe des Rechtecks enthealt.
     */
    @Override
    public String toString()
    {
        return "[" + x1 + "," + y1 + "; " + width + "," + height + "]";
    }

    public static void main(String[] args)
    {
        Rechteck rect = new Rechteck();
        Rechteck r0 = new Rechteck(1, 18, 13, 15);
        Rechteck r1 = new Rechteck(1, 2, 2, 5);
        Rechteck r2 = new Rechteck(3, 5, 13, 13);
       
        System.out.println(rect);
        System.out.println(r0.union(r1));
        System.out.println(r0.intersection(r2));
        System.out.println(r0.isInside(5, 15));
        System.out.println(r0.toString());
    }
}
```


----------



## dayaftereh (27. Jun 2010)

Super 3 Fach Post!
Hey , schau dir das mal an!

```
import java.awt.Graphics;

import javax.swing.JApplet;

public class MainClass extends JApplet {
  String str = "";

  public void init() {
    str += "init; ";
  }

  public void start() {
    str += "start; ";
  }

  public void stop() {
    str += "stop; ";
  }

  public void destroy() {
    System.out.println("destroy");
  }

  public void paint(Graphics g) {
    g.drawString(str, 10, 25);
  }
}
```
Führe das mal als Applet aus und schau was passiert!
und mit auf das Graphics Object in der paint Methode kannst du jetzt ein Rechteck zeichenen:

```
g.drawRect(10,10,50, 50) ;
```


----------



## haf_blade (28. Jun 2010)

Da ich jetzt nicht genau weiß, was die drei einzubindenden Klassen tun ists schwierig zu sagen wie du zeichnen kannst.
Es gibt aber im allgemeinen zwei verschiedene Möglichkeiten um Zeichnungen in Java in einer Oberfläche auszugeben.

Als Applet (so klingt es wenn man sich die Namen der Klassen ansieht)
JAVA: 9.4.5 Zeichnen in Applets

Oder halt per Swing etc.
Sun Tutorial: Trail: 2D Graphics (The Java™ Tutorials)
Eins meiner Lieblingstutorials : Java2D: An Introduction and Tutorial

Achso und noch ne Kleinigkeit. Du hast den Thread 2 mal erstellt!


----------



## L-ectron-X (28. Jun 2010)

haf_blade hat gesagt.:


> Du hast den Thread 2 mal erstellt!


Insgesamt 3x. Die anderen beiden habe ich bereits entfernt.


----------

