Bild als Hintergrund auf JPanel

RMI_17

Erfahrenes Mitglied
Hallo

Ich sollte eine JPanel erzeugen dass anstatt grau ein Bild als Hintergrund hat, also wenn man einen Rahmen drumherum zeichnen würde währe das Bild umrahmt.

Ich habe schon in älteren Beiträgen gesucht bin daraus aber leider nicht schlau geworden.

Bitte helft mir

mfg rmi
 
Hi also,

eine JPanel ist ein Container, der dazu dient Labels, Buttons etc. anzuzeigen in einem JFrame ;).

So, also, was ist des rätsels einfachste lösung:

Du nimmst ein JPanel und ein JLabel.

Dann weisst du dem JLabel ein hintergrund bild zu und setzt es in das JPanel,

schwupp-di-wupp hast du ein JPanel mit einem Hintergrund bild statt dem grau. ;)

Gruss,

Torsten
 
Hoi

Kann ich dann auf das Label auch noch verschiedene Textfelder setzen?

Kannst du mir bitte mal kurz posten wie ich dem Label das Bild zuweise

Vielen Dank rmi
 
Hmm, nein da das JLabel nur zum anzeigen von text, etc da ist.

Hmm.
da muss ich nochmal nach einer anderen lösung schauen bzw. eine überlegen ;)

Gruss,

Torsten
 
Hier hab ich selber die Lösung gefunden:

Code:
package Image;

/**
 * @author Domenico Thöni
 * 
 */

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class BackgroundPanel extends JPanel{
    
    public static void main(String[] args)
    {
        String pic;
        JLabel textLabel = new JLabel();
        JFrame fra = new JFrame();

        pic = "C:/my.jpg";
 
        JLabel backImgPanel = new JLabel(new ImageIcon("C:/my.jpg"));
        
        backImgPanel.setLayout(null);
        backImgPanel.setOpaque(false);
        
        backImgPanel.add(textLabel);        
        textLabel.setText("Vorder");
        textLabel.setBounds(0,0,200,100);

        fra.getContentPane().add(backImgPanel);
        backImgPanel.setBounds(0,0,400,300);
        
        fra.pack();
        fra.show();
    }
}

Hoffentlich kann noch jemand gebrauchen.

Danke an alle für die Hilfe

mfg RMI
 
Hallo!

leite einfach eine Klasse von JPanel ab und überschreibe dort die paintComponent(Graphics g) Methode, fertig.

Gruß Tom
 
Hallo!

Code:
  package de.tutorials;
  
  import java.awt.Component;
  import java.awt.Dimension;
  import java.awt.Graphics;
  
  import javax.swing.ImageIcon;
  import javax.swing.JFrame;
  import javax.swing.JPanel;
  
  public class BackgroundImageExample extends JFrame {
  
  	public BackgroundImageExample() {
  		super("BackgroundImageExample");
  		setDefaultCloseOperation(EXIT_ON_CLOSE);
  
  		add(new BackgroundPanel(new ImageIcon("c:/Sonnenuntergang.jpg")));
  
  		pack();
  		setVisible(true);
  	}
  
  	/**
  	 * @param args
  	 */
  	public static void main(String[] args) {
  		new BackgroundImageExample();
  	}
  
  	class BackgroundPanel extends JPanel {
  		ImageIcon icon;
  
  		public BackgroundPanel(ImageIcon icon) {
  			this.icon = icon;
  		}
  
  		protected void paintComponent(Graphics g) {
  			super.paintComponent(g);
  			if (this.icon != null) {
 				g.drawImage(icon.getImage(), 0, 0, this);
  			}
  		}
  
  		public Dimension getPreferredSize() {
  			if (icon != null) {
 			    return new Dimension(icon.getIconWidth(), icon.getIconHeight());
  			} else {
 				return super.getPreferredSize();
  			}
  		}
  	}
  }

Gruß Tom
 
Zurück