Bild in Java einfügen

Status
Nicht offen für weitere Antworten.

_fabi

Aktives Mitglied
Hallo zusammen,
ich weiss, dass es das Thema 'bild in Java einfügen' schön häufig gibt, aber ich habe bisher ca. 2h gegoogelt und viele Möglichkeiten gefunden, die aber alle nicht funktioniert haben. ich poste jetzt hier einfach mal einen kurzen code, an dem ich versucht habe das Bild als image icon in ein label einzufügen, aber es wird nie angezeigt:

[HIGHLIGHT="Java"]public class FillFrame extends JFrame {

public FillFrame(){

setTitle( "Tutoraufgabe 1: Traktor" );
setDefaultCloseOperation( EXIT_ON_CLOSE );

JLabel pic = new JLabel(new ImageIcon("Traktor.gif"));

JLabel center = new JLabel("dieser text wird nicht angezeigt, wenn ich das Bild adde");

getContentPane().setBackground( Color.blue); //ContentPane einrichten
getContentPane().setLayout( new BorderLayout() );

getContentPane().add(center, BorderLayout.CENTER);
getContentPane().add(pic, BorderLayout.CENTER);

}

public static void main(String[] args) {

FillFrame picture = new FillFrame();
picture.setVisible(true);
picture.setSize(1200, 900);

}
}
[/HIGHLIGHT]
So funktioniert es nicht, wenn ihr mir weiterhelfen könntet, eine einfachere oder bessere Idee habt, wie ich sowas hinbekomme, oder ich sonst irgendwelche Fehler gemacht habe, dann sagt es mir bitte, ich bin noch totaler anfänger und versuche mir das grad so beizubringen alles.

Vielen Dank für eure Hilfe schon mal,
liebe Grüße,

Fabi

PS: wie kann ich denn den code als code anzeigen lassen?
 
Zuletzt bearbeitet von einem Moderator:
so auf die schnelle
Code:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ShowPicture {

	public static void main(String[] args) throws IOException {
		JFrame frame = new JFrame();

		BufferedImage image = ImageIO.read(new File("bild.png"));
		JPanel panel = new PicturePanel(image);
		frame.getContentPane().add(panel);

		frame.setSize(200, 200);
		frame.setVisible(true);
	}

	static class PicturePanel extends JPanel {

		BufferedImage image;

		PicturePanel(BufferedImage image) {
			this.image = image;
		}

		@Override
		public void paintComponent(Graphics g) {
			super.paintComponents(g);
			g.drawImage(image, 0, 0, null);
		}
	}

}

>PS: wie kann ich denn den code als code anzeigen lassen?

tags:
[*code] .... [*/code]
onhe stern
oder spezielle mit highlight tag

EDIT2:
Dein Code funktioniert bei mir...dh das bild wird angezeigt mit baluem hintergund
(allerdings mit meinem png)
 
Zuletzt bearbeitet:
PS: wie kann ich denn den code als code anzeigen lassen?
[noparse][highlight=Java] Dein Quelltext [/highlight][/noparse]

Das Problem: Du positionierst an der gleichen Position im BorderLayout nacheinander zwei Komponenten. Nur die zuletzt hinzugefügte Komponente wird dann angezeigt.
Besser wäre es, das Layout zu schachteln bzw. einen geeigneten LayoutManager zu benutzen, um deine Komponenten wie gewünscht anzuordnen.
 
>sehe grade

ImageIcon schmeisst kein exception bei falschem url....

vielleicht hilft dir ein

System.out.println(System.getProperty("user.dir"))

weil das Pic im falschen Ordner ist...
und natürlich...siehe L-Ectron-X
 
ah... ich hab meine frage blöd gestellt.
ich will den text gar nicht angezeigt haben, er dient eigentlich nur der kontrolle. das problem ist aber, dass das bild erst gar nicht angezeigt wird. ich hab das bild auch im richtigen ordner, (wenn es nicht da ist, dann bekomme ich eine fehlermeldung) aber angezeigt wird ees nicht. aber wenn ich das bild nicht adde, dann wird der text angezeigt, wenn ich das bild adde, dann wird nur der text nicht angezeigt, sonst ändert sich nichts.
hoffe ich habe es so etwas klarer formuliert.

vielen dank nochmal,
fabi

EDIT: warum funktioniert der code bei dir, und bei mir nicht? ich habe auch mehrere bilder und bildgrößen ausprobiert, weil ich dachte es könnte daran liegen, aber es hat nichts geklappt
 
Zuletzt bearbeitet:
tut mir leid, ich glaube ich hab den Fehler gefunden...
ihr hattet natürlich recht, ich habe das Bild im falschen ordner gespeichert und somit hat er es nicht geladen...
dass ich deshalb vorhin eine warnung bekommen habe kann also ned sein, da muss ich mich getäuscht haben...
vielen vielen Dank für die schnelle hilfe,
ich hoffe ich stell mich nicht nochmal so blöd an...
schönen abend noch,
fabi
 
>ich hoffe ich stell mich nicht nochmal so blöd an...

bist nicht der erste ;-) ... no worries

ein Sysout (user.dir) hilft immer 🙂
 
Zur ursprünglichen Frage:
getContentPane().add(center, BorderLayout.CENTER);
getContentPane().add(pic, BorderLayout.CENTER);
Wenn beides im CENTER liegen soll.. ja, das geht halt nicht
getContentPane().add(center, BorderLayout.CENTER);
getContentPane().add(pic, BorderLayout.NORTH);
oder so würde gehen...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben