Bild auf JPanel einbinden?

Marco Bockstatt

Grünschnabel
Hi ich hab gehört man kann ein image auf einem JPanel einbinden.
Leider hab ich keine ahnung wie das geht und mit der hilfe aus den anderen Thrads nicht wirklich erfolg gehabt. Vllt könnt ihr mir ja helfen. Hier ist mal n Teil von meinem Quellcode.

Code:
//Panels erzeugen
	private void makePanels(){
		for(int x = 0; x < 15; x++){
			for(int y = 0; y < 15; y++){
				this.add(p[x][y]);
				p[x][y] = new JPanel();
				p[x][y].setLocation(151 + x*50, 151 + y*50);
				p[x][y].setSize(49,49);
				p[x][y].setBackground(Color.LIGHT_GRAY);
				p[x][y].setVisible(true);
				//p[x][y].setEnabled(true);
				}//innere for
			}//äußere for
		}//makePanels

	public void init() {
	makePanels();
		 picture = getImage(getCodeBase(), "images/fractal.gif"); //des hab ich bisher gefunden
	}//end init

public void paint(Graphics g) {
		g.drawImage(picture,p[actualX][actualY].getGraphics(), ImageObserver);
                //wie kann ich hier angeben das des in dem Panel X,Y angezeigt wird?
}//end paint
 
Das kann viel einfacher gehen. Du kannst auf dein JPanel einfach ein JLabel rein packen. In das kannst du wie folgt ein Bild einbinden:

Java:
File imageFile = new File("C:/path/to/my/pictures.jpg");
JPanel panel = new JPanel();
BufferedImage image = null;
try {
    BufferedImage image = ImageIO.read(imageFile);
}
catch(IOException ioex) {
    //abort
    System.exit(1);
}
panel.add(new JLabel(new ImageIcon(image)));

Damit das so funktionierst brauchst du ausser den üblichen Paketen noch das Paket javax.imageio.*
 
Zuletzt bearbeitet von einem Moderator:
Ja also danke erstmal
aber bei mir klappt das nicht so wirklich. mein image wird nicht angezeigt...
naja ich hab morgen nomol CT unterricht vllt weis der lehrer was :p
 
Ich würde hier mal auf einige ganz banale Fehlerquellen tippen

1) FALSCHE relative Pfade ... versuche zum Test mal absolute
2) Kein Decoder - das Format in dem die Bildinformationen vorliegen kann von Java nicht verarbeitet werden ... gängige Typen : jpg , png , gif , bmp
3) Animiertes Gif - es gibt immer mal wieder Threads über Fehler in Java das animierte Gif's falsch / nicht animiert / gar nicht angezeigt werden ... versuchs stattdessen mal mit nem einfachen Pictogram in jpg oder png

@Techno
Es wird auch java.awt.image.* gebraucht da BufferedImage nunmal darin liegt !
 
Hallo,

@Technoblade
Gibt es einen Grund, dass du das Image erst noch als BufferedImage lädst?

Gruß

Sascha
 
Jein. Praktisch macht es ja keinen Unterschied, zumindest in diesem Fall. Habe mir angewöhnt, auch wenn die Oberklasse ausreichen würde, immer die direkten Rückgabtypen von Methoden auch für die Variablen zu verwenden. Finde dann ist es besser lesbar.

Weiterhin spart man sich im Zweifelsfall, wenn man später noch etwas ändern möchte und dafür Variablen/Methoden der Unterklasse braucht, ein wenig Schreibarbeit.
 
Zurück