Hintergrundbild im JPanel

Status
Nicht offen für weitere Antworten.
T

terryl

Gast
Ist wahrscheinlich schon tausendmal gefragt worden, aber entweder bin ich mit dem Code nicht zurechtgekommen oder es funktionierte nicht. Im Forum hab ich mal den Tipp gefunden, dem Panel ein Label hinzuzufügen, deshalb hier ein Code-Auszug:

Code:
public class MyApp
extends JFrame
{
    /* ... */
	JPanel mypanel = new JPanel( new BorderLayout() );
    mypanel.setOpaque( false );
    JLabel bgimage = new JLabel( new ImageIcon( "img/bg.png" ) );
    mypanel.add( bgimage );
	/* ... */
}

So funktioniert's aber nicht unter JDK 1.5. Gibt'S da keine fertige Anweisung in der Art "mypanel.setBackgroundImage(<bild>)"?

Wie bekomme ich es auf einfachste Weise hin, wobei hinzukommt, dass das Bild auswechselbar sein muss zur Laufzeit?

Wäre prima, jemand könnte meinen Beispielcode ergänzen.
 

L-ectron-X

Gesperrter Benutzer
Das könnte gehen, wenn du dir dazu eine eigene Klasse schreibst:

Java:
import java.awt.*;
import javax.swing.*;

public class PicturePanel extends JPanel { 
   private Image image; 

   public PicturePanel() { 
      super(); 
   } 

   public PicturePanel(boolean isDoubleBuffered) { 
      super(isDoubleBuffered); 
   } 

   public PicturePanel(LayoutManager layout) { 
      super(layout); 
   } 

   public PicturePanel(LayoutManager layout, boolean isDoubleBuffered) { 
      super(layout, isDoubleBuffered); 
   } 

   public void setBackgroundImage(Image image) { 
      this.image = image; 
      repaint(); 
   } 

   protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      if(image != null) { 
         g.drawImage(image, 0, 0, this); 
      } 
   } 
}

Du instanziierst dann nicht mehr ein JPanel sondern ein Objekt der Klasse PicturePanel und kannst dann aber jederzeit dein Hintergrundbild einsetzen: panel.setBackgroundImage(image);
 
T

terryl

Gast
Wenn ich das richtig verstehe, müsste nach Schreiben der Klasse mein Beispielcode wie folgt aussehen:

Code:
public class MyApp
extends JFrame
{
    /* ... */
   JPanel mypanel = new PicturePanel( new BorderLayout() );
    mypanel.setBackgroundImage( "bg.jpg" );
   /* ... */
}
 
T

terryl

Gast
Äh, nein. In der Klasse PicturePanel ist die Methode von dir so definiert worden:

Code:
   public void setBackgroundImage(Image image) {
      this.image = image;
      repaint();
   }

Mein Versuch, einen String als Parameter zu übergeben, scheiterte natürlich. Wie muss die Methode aussehen für einen String als Parameter, oder wie muss der Aufruf gecastet werden? ("mypanel.setBackgroundImage( (Image)"bg.jpg" );" funktioniert auch nicht.)
 
T

terryl

Gast
Leider gibt es keine fertige Methode zum Konvertieren eines Strings in ein Objekt vom Typ Image, aber mit dem folgenden Konstrukt geht es (Hurra!):

Code:
   public void setBackgroundImage(String image) {
      Image img = Toolkit.getDefaultToolkit().getImage( image );
      this.image = img;
      repaint();
   }

Danke L-ectron-X für deine Hilfe! Verwundert bin ich nur, dass es diese Methode nicht schon fertig in Java gibt. Ich bin doch nicht der einzige, der so etwas machen möchte ...

Jetzt fehlt nur noch eine Ergänzung, die das Bild auf die Größe des Panel vergrößert. Eine Idee?
 
T

terryl

Gast
Oh Mann, wenn man mit dem Kopf ständig auf die Tischplatte schlägt, weil nicht alles gleich so geht wie gedacht, vergisst man so manches (vielleicht wären Schläge auf den Hinterkopf besser ;-):

In meinem Panel wurde ein JLabel und ein weiteres Panel mit FlowLayout eingefügt. Das Bild reichte nicht ins FlowLayout, weil ich vergessen hatte, setOpaque() zu setzen:

Code:
        JPanel buttons = new JPanel( new FlowLayout( FlowLayout.CENTER, 20, 20 ) );
        buttons.setOpaque( false );

Schwupp, wurde das Bild im ganzen höheren Panel angezeigt ...

@L-ectron-X: Dein Spruch "Programmieren lernt man nur durch programmieren" bewahrheitet sich mal wieder.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
Haubitze_Broese Hintergrundbild im JPanel? Java Basics - Anfänger-Themen 2
G Hintergrundbild im jPanel Java Basics - Anfänger-Themen 27
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
S JFrame mit Hintergrundbild und Button Java Basics - Anfänger-Themen 4
CptK Hintergrundbild Java Basics - Anfänger-Themen 2
K Java JFrame mit Hintergrundbild erstellen Java Basics - Anfänger-Themen 1
P Hintergrundbild in Swing einfügen Java Basics - Anfänger-Themen 3
A Benötige GUI Objekt für Hintergrundbild Java Basics - Anfänger-Themen 3
K Erste Schritte GUI - Hintergrundbild und darauf Buttons Java Basics - Anfänger-Themen 2
D java jbuttons auf dem Hintergrundbild Java Basics - Anfänger-Themen 11
M Hintergrundbild für JButton Java Basics - Anfänger-Themen 6
S Swing, Panel über Hintergrundbild!! Java Basics - Anfänger-Themen 6
Fab1 Buttons auf ein Hintergrundbild(JFrame) setzen Java Basics - Anfänger-Themen 24
J [JAVA] Bild in jar einbinden (Hintergrundbild)? Java Basics - Anfänger-Themen 8
D GUI mit Hintergrundbild Java Basics - Anfänger-Themen 13
H Hintergrundbild auf JFrame Java Basics - Anfänger-Themen 10
H Hintergrundbild Java Basics - Anfänger-Themen 8
W Button ausrichten / Hintergrundbild Java Basics - Anfänger-Themen 9
D Hintergrundbild einfügen Java Basics - Anfänger-Themen 4
C Hintergrundbild im JFrame skalieren Java Basics - Anfänger-Themen 2
hdi Hintergrundbild in JFrame, die hunderste ;) Java Basics - Anfänger-Themen 43
A Problem mit Hintergrundbild in Applet Java Basics - Anfänger-Themen 2
G Hintergrundbild Java Basics - Anfänger-Themen 7
G Hintergrundbild mit sensitiven Bereichen Java Basics - Anfänger-Themen 2
G Hintergrundbild in Frame Java Basics - Anfänger-Themen 15
T Button Hintergrundbild machen ? Java Basics - Anfänger-Themen 19
G Hintergrundbild mit Transparentem Label Java Basics - Anfänger-Themen 5
D Windows Hintergrundbild ändern? Java Basics - Anfänger-Themen 5
J Problem mit Hintergrundbild Java Basics - Anfänger-Themen 13
K striche die sich auf dem hintergrundbild bewegen Java Basics - Anfänger-Themen 10
S Problem mit Hintergrundbild Java Basics - Anfänger-Themen 8
W Hintergrundbild im JFrame Java Basics - Anfänger-Themen 4
D Hintergrundbild nur in der Entwicklungsumgebung sichtbar Java Basics - Anfänger-Themen 8
B JLabel auf Hintergrundbild Java Basics - Anfänger-Themen 9
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
Q JPanel Java Basics - Anfänger-Themen 2
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
B JPanel -JTable Java Basics - Anfänger-Themen 2
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
L zoomen aus jpanel Java Basics - Anfänger-Themen 7
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
F JPanel zu klein Java Basics - Anfänger-Themen 5
D GUI - Objekte in JPanel nach oben schieben Java Basics - Anfänger-Themen 2
S JPanel wird nicht eingefügt Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben