# Card beim CardLayoutManager mit paint() bemalen???



## EnTaroAdun (13. Apr 2004)

Hi, 

g'rade neu angemeldet  8) . Wenn ich bei meinem Applet einen CardLayoutManager benutze und auf einer der Cards soll eine mit paint() erstellte Grafik (BalkenGrafik) angezeigt werde, wie stelle ich das an? Mir scheints fast so zu sein, als könnte man nur auf das Appet direkt zeichen oder kann man auch bstimmte Components bemalen? Die Cards werden über eine CheckBoxGroup gesteuert.

Ich würde mich sehr über (ausführliche) Hilfe freuen, bin wie gesagt Anfänger und habe dazu noch nix gefunden  

EnTaroAdun


P.S.:

Die Grafik ist fertig. Ich habe nur keine Ahnung wie ich Paint dazu bringe nur auf die eine Card zu malen und nicht auf das Gesamte Applet ?!


----------



## Beni (13. Apr 2004)

Erstmal Willkommen

Jetzt zu deiner Frage:
Indem du in diesem Card (wahrscheinlich eine Subclass von Panel) die Methode paint (für Swing: paintComponent) überschreibst.
(Nicht das Applet, sondern das Panel zeichnen lassen).

mfg Beni


----------



## EnTaroAdun (13. Apr 2004)

Danke für die Antwort!

  Vielleicht bin ich ja einfach zu flau in der Rübe, aber was meinst du mit "überschreibst"? Ich packe einfach mal meinen Code hintendrann, dann kannst du mir's vielleicht daran erklären, wenn du möchtest.

Danke


En Taro Adun


```
package test_private;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;


public class test_privateApplet1 extends Applet {

  public void init() {

    setLayout(new BorderLayout());

    Panel pnl1 = new Panel();
    Panel pnl2 = new Panel();    //  <--------- in das Panel soll mit paint () gezeichnet werden

    Label lbl1 = new Label ("Bruttoinlandsprodukt von 2002");
    lbl1.setAlignment (Label.CENTER);
    lbl1.setFont(new Font ("Arial",Font.PLAIN,18));
    pnl1.add (lbl1);

    add (pnl1, BorderLayout.WEST);
    add (pnl2, BorderLayout.EAST);


  }// init


  public void paint(Graphics g){         //<--------- AWT  paint ()
      int x = 50;
      int y = 60;
      g.setColor (new Color(0x8080FF));
      g.fill3DRect(x+5,y+40,x+72,y-15,true);
  } // paint

}//test_private
```


----------



## Beni (13. Apr 2004)

Du schreibst dir eine neue Klasse, ich nenne sie mal "Card". Vielleicht willst du da noch irgendwelche Daten anzeigen, deshalb gibts gleich noch einen Integer "data" gratis.
	
	
	
	





```
public class Card extends Panel{
  private int data = 0;

  ...

  public void setData( int data ){
    this.data = data;
    repaint();
  }

  public void paint( Graphics g ){
    ...  // Bild zeichnen, mit allem drum und dran. Abhängig vom Parameter "data"
  }
}
```

Und benutzt diese später:

```
public class test_privateApplet1 extends Applet {
  private Card card1, card2;

  public void init() {

    setLayout(new BorderLayout());

    card1 = new Card();
    card2 = new Card();

    Label lbl1 = new Label ("Bruttoinlandsprodukt von 2002");
    lbl1.setAlignment (Label.CENTER);
    lbl1.setFont(new Font ("Arial",Font.PLAIN,18));
    pnl1.add (lbl1);

    add (card1, BorderLayout.WEST);
    add (card2, BorderLayout.EAST);
  }// init

  // Hier aufrufen, falls neue Daten bei den Cards gesetzt werden sollen
  public void setData( int a, int b ){
    card1.setData( a );
    card2.setData( b );
  }

// Die brauchen wir jetzt nicht mehr (es sei denn, das Applet soll noch was anderes kompliziertes machen
/*  public void paint(Graphics g){         //<--------- AWT  paint ()
      int x = 50;
      int y = 60;
      g.setColor (new Color(0x8080FF));
      g.fill3DRect(x+5,y+40,x+72,y-15,true);
  } // paint */

}//test_private
```


"Überschreiben" nennt man den Vorgang, wenn du eine Methode die in der Superklasse bereits definiert ist, neu implementierst. Du überdeckts (oder überschreibst) die Original-Methode mit deiner eigenen.

mfg Beni


----------



## EnTaroAdun (13. Apr 2004)

Hallo Beni,

1000 Danke erstmal für die ausführliche Antowort!!! Ich werde mich jez mal dran setzen und mir das zurechtbiegen . Schönen Abend noch,

EnTaro


----------

