# Eigene Component erstellen?



## Der Eine da (7. Okt 2008)

Tach zusammen, 
Ich versuche jetzt schon ungefähr 5 Stunden herauszufinden, wie ich eine Klasse so von Component ableiten kann, dass sie auch tatsächlich in einem Applet zu sehen ist, wenn sie instanziiert und dem Applet hinzugefügt wird. Ich konnte im Netz nichts finden, das mir weiterhelfen konnte. Hier ist mein Programmcode:



```
import java.awt.*;
import java.applet.*;

public class Appl extends Applet
{
  Komponente Com = new Komponente();

  public void init()
  {
    this.setBackground(Color.black);
    this.add(Com);
  }
}

class Komponente extends Component
{
  Komponente()
  {
    this.setPreferredSize(new Dimension(100, 100));
    this.setSize(100, 100);
    this.setBackground(Color.white);
  }
}
```



Kann mir jemand sagen, warum das nicht funktioniert?

mfg,     Der Eine da


----------



## Marco13 (7. Okt 2008)

Component füllt - wenn ich mich recht erinnere - ihren Hintergrund nicht von selbst aus.

Sowas würde gehen

```
import java.awt.*;
import java.applet.*;

public class Appl extends Applet
{
  Komponente Com = new Komponente();

  public void init()
  {
    this.setBackground(Color.black);
    this.add(Com);
    Com.setBounds(30,30,50,50);
  }
}

class Komponente extends Component
{
  Komponente()
  {
    this.setPreferredSize(new Dimension(100, 100));
    this.setSize(100, 100);
    this.setBackground(Color.white);
  }

  public void paint(Graphics g)
  {
      super.paint(g);

      // Fülle die Component mit ihrer Hintergrundfarbe
      g.setColor(getBackground());
      g.fillRect(0,0,getWidth(),getHeight());

      // Test
      g.setColor(Color.RED);
      g.drawString("Hallo", 20, 20);
  }
}
```

Übrigens würde ich dir empfehlen, nicht AWT (Applet, Component) sondern Swing (JApplet, JComponent) zu verwenden. Letzteres ist moderner, bietet mehr Möglichkeiten, und ist in mancher Hinsicht einfacher....


----------



## Der Eine da (7. Okt 2008)

AAAh, super, das klappt ja wunderbar, danke schön.

Was ist denn eigentlich der genaue Unterschied zwischen setBounds() und setSize()?


----------



## 0x7F800000 (8. Okt 2008)

bei setSize() gibst du die größe an, bei setBounds() gibst du die größe *und* die position vor.

Aber lass bloß die Finger davon. Die Methoden sind nicht für Menschen, sondern für Layout Manager gedacht, du solltest daran nicht eigenwillig herumbasteln. (Außer bei dem ganz großen äußeren Fenster, da darf man beides natürlich verwenden)


----------



## Der Eine da (8. Okt 2008)

Super, danke schön, erstmal alle Fragen beantwortet.


----------

