PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JPanel: hintergrundbild laden



neonknight
18-06-2003, 14:16
hallo

ich steh mal wieder auf dem schlauch...
trotzdem hat diese frage eher niedrige priorität, da es sich nur um eine kosmetische sache handelt ;)

wie kann ich bei einem JPanel eine grafik (z.b. jpg) als hintergrundbild laden und dann die anderen elemente (buttons, textfelder, labels etc) darüber platzieren?

ich verwende zur positionierung das gridbaglayout.

jamba
24-06-2003, 13:46
weiss ich jetzt auf die schnelle auch nicht.

aber ich empfehle dir, unter java.sun.com zu suchen. hier gibts die search engine dazu: http://java.sun.com/j2se/1.4.1/search.html
such mal nach"JPanel". vielleich kann dir die api weiterhelfen.

mein tip: vielleicht brauchts du da einen layoutmanager???

jamba

SeeksTheMoon
25-06-2003, 00:54
die Swing Komponenten bestehen aus mehreren Layern. Wenn Du einen Button addest, dann machst Du das ja i.d.R auf jFrame.getContentPane()
Zusätzlich gibt es noch GlassPane, LayeredPane und RootPane und den Frame selber.
Siehe hier: http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html#contentpane
oder besser hier:
http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html

Du musst also das Bild zu einem tieferen Pane hinzufügen. Ich habs noch nicht gemacht, aber auf die schnelle sehe ich keinen Grund, der dagegen spricht.

bischi
25-06-2003, 07:43
Image Bild = Toolkit.getImage("Pfad");
ImageIcon Icon = new ImageIcon(Bild);

Label l = new Label(Image Icon);
JPane.add(Label);

Irgendwie so.

MfG Bischi

Lin728
25-06-2003, 11:50
SeeksTheMoon: Ja, so dürte es klappen! Werde es bei mir auch mal ausprobieren ;-)

Mfg

bischi
25-06-2003, 12:00
Also: In einem JPanel kannst du mehrere Sachen übereinanderlegen. Ein ImageIcon hat nicht unbedingt die Grösse eines Icons, sondern ist so gross, wie das Bild, aus welchem es erstellt wurde. Also musst du nur ein Bild erstellen, das genügend gross ist, (und das Label ganz am Schluss erst im Code einfügen (nachdem alle darüberliegenden Elemente gezeichnet wurden)) und schon hast du auf einfache Weise ein Hintergrundbild, ohne grossen Aufwand zu betreiben (Ich habs bis jetzt immer so gemacht und es hat immer so funktioniert...)

MfG Bischi