Bilder in Java Swing Komponenten

Meister der Runen

Emergency Induction Port
Mitglied seit
14.03.2004
Beiträge
1.654
Und wieder einmal ist es so weit, Java treibt mich in den Wahnsinn. Man
möchte meinen, dass das hinzufügen eines Bildes in eine Swing Komponente
leicht wäre, aber es hat mich wahrscheinlich 3 Jahre meiner Lebenszeit gekostet
und immernoch klappt es nicht...
Code:
import javax.swing.*;

public class Testclass extends JFrame {

    JPanel p = new JPanel();
    ImageIcon img = new ImageIcon("bildername.jpg");
    JLabel l = new JLabel(img);

    public void gui() {
        setTitle("**** YOU JAVA!");
        l.setIcon(img);
        p.add(l);
        add(p);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(1000, 800);
//        setResizable(false);
        setVisible(true);

    }

    public static void main(String[] args) {
        Testclass t = new Testclass();
        t.gui();
    }
}
Das bild liegt im Ordner der .java Datei.

Edit:
Wenn ich den kompletten Pfad angebe klappts. Das bringt aber ein Problem mit sich:
Ich kanns nicht allgemein machen.
 
Zuletzt bearbeitet:

Redwolf

Folge der 8 bei den Palmen!
Mitglied seit
14.02.2002
Beiträge
2.817
Probiers mal mit

Code:
URL resource1 = Testclass.class.getResource( "/bildername.jpg" ); 
Icon icon1 = new ImageIcon(resource1);
Das Tolle an Java ist, man kann simple html-Ausdrücke bei den setText-Methoden benutzen. Damit wirst du deinen Lehrer garantiert nen Schock verpassen ;-)



Ich muss nicht erwähen, dass du

htt p://jon. oberheide .org/ blog/ wp-content/uploads/2008/03/rickroll.jpg

auch mit

file:///c:/test.jpg

ersetzen kannst ;)

Erstmal die Klassenlose Schmalspurversion:

Code:
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setSize(640, 480);
		frame.add(new JLabel("<html><body><img src=\"http://jon.oberheide.org/blog/wp-content/uploads/2008/03/rickroll.jpg\"/></body></html>"));
		frame.setVisible(true);
	}
Und jetzt das ganze mit abgeleiteten JFrame. Dran denken: Immer die ganzen Konstruktoren überschreiben, sonst kannet Probs geben.

Code:
package de.redwolf.swingimage;

import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class SwingImageFrame extends JFrame {
	
	public SwingImageFrame() throws HeadlessException {
		super();
		initialize();
	}
	
	public SwingImageFrame(GraphicsConfiguration arg0) {
		super(arg0);
		initialize();
	}

	public SwingImageFrame(String arg0, GraphicsConfiguration arg1) {
		super(arg0, arg1);
		initialize();
	}

	public SwingImageFrame(String arg0) throws HeadlessException {
		super(arg0);
		initialize();
	}
	
	private void initialize() 
	{
		this.add(new JLabel("<html><body><img src=\"http://jon.oberheide.org/blog/wp-content/uploads/2008/03/rickroll.jpg\"/></body></html>"));
		this.setSize(640, 480);
	}

	public static void main(String[] args) {
		SwingImageFrame frame = new SwingImageFrame();
		frame.setVisible(true);
	}
}
 
Zuletzt bearbeitet:
Oben