# Hintergrund auf Panel!



## Nilse (17. Apr 2005)

Hi,
ich versuche ein Hintergrund Bild auf ein Panel einfügen! Aber irgendwie klappt das nicht.

*schnipp....*

```
public void init(){
        background = getImage(getCodeBase(), "images/back2.jpg");
        content = new Panel(new BorderLayout());
        buttonPanel = new Panel(new BorderLayout());
        zurueck = new Button("Zurück");
        zurueck.addActionListener(this);
        zurueck.setActionCommand("zurueck");
        vor = new Button("Vor");
        vor.addActionListener(this);
        vor.setActionCommand("vor");
        buttonPanel.add("East", vor);
        buttonPanel.add("West", zurueck);
        buttonPanel.setBackground(Color.WHITE);
        buttonPanel.setForeground(Color.BLACK);
        setLayout(new BorderLayout());
        add("Center",content);
        add("South", buttonPanel);
    }
public void paint(Graphics g){
        g.drawImage(background,0,0,this);
    }
```
*schnapp...*

Und zwar möchte ich gerne, dass NUR das Panel content das Hintergrund Bild back2.jpg bekommt, aber es klappt nicht. Das ganze Applet bekommt das Hintergrund Bild. Kann man das überhaupt machen, mit einem Panel???
Ich hoffe mir kann jemand bei meinem Problem helfen


----------



## Beni (17. Apr 2005)

Schreib eine Klasse die von Panel erbt, und in der "paint" überschrieben ist (um das Hintergrundbild zu zeichnen).

Anschliessend benutzt du eine Instanz dieses Panels als content.

Ich glaub, dazu ist sogar was in der FAQ.


----------



## Nilse (18. Apr 2005)

Jo, aber wie???
Gib mir mal bitte nen kleinen Denkanstoss...


----------



## Beni (18. Apr 2005)

```
public class PaintPanel extends Panel{
  public void paint( Graphics g ){
    ...
  }
}
```


```
public class BackgroundApplet extends Applet{
  public void init(){
    Component content = new PaintPanel();
    add( content, "Center" );
  }
}
```


----------



## Nilse (18. Apr 2005)

Sorry, aber ich bin glaub ich echt noch nen Java Noob, wo übergeb ich denn nu das Bild????


----------



## Nilse (18. Apr 2005)

OK, jetzt hab ichs:
Die "Ableitungsklasse":

```
public class BackgroundPanel extends Panel{
private URL url = null;

public BackgroundPanel(URL url){
super(true);
this.url = url;
}

public void paint(Graphics g){
BufferedImage pic = null;
try{
pic = ImageIO.read(url);
}
catch(MalformedURLException el){
el.printStackTrace();
}
catch(IOException e2){
e2.printStackTrace();
}
g.drawImage(pic,0,0,this);
super.paint(g);
}
}
```

Der Aufruf in der anderen Klasse:

```
URL url = null;
try{
url = new URL(getCodeBase()+File.separator+"back2.jpg");
}
catch(MalformedURLException el){
el.printStackTrace();
}
BackgroundPanel myPanel = new BackgroundPanel(url);
myPanel.add(textfield);
getContentPane().add(myPanel);
```

Ich weiss, ist ein wenig Umständlich, aber es funktioniert


----------

