Hintergrund auf Panel!

Status
Nicht offen für weitere Antworten.
N

Nilse

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

*schnipp....*
Code:
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 :)
 
B

Beni

Gast
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.
 
B

Beni

Gast
Code:
public class PaintPanel extends Panel{
  public void paint( Graphics g ){
    ...
  }
}

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

Nilse

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

Nilse

Mitglied
OK, jetzt hab ichs:
Die "Ableitungsklasse":
Code:
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:
Code:
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 :)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben