Swing Zur Laufzeit Bild laden und auf JPanel anzeigen

filth

Bekanntes Mitglied
Hallo,

ich möchte zur Laufzeit ein Bild laden und anzeigen. Dafür habe ich eine ImagePanel Klasse:

Java:
package nightClient;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JPanel;


@SuppressWarnings("serial")
class ImagePanel extends JPanel {

  private Image img;

  public ImagePanel(String img) {
    this(new ImageIcon(img).getImage());
  }

  public ImagePanel(Image img) {
    this.img = img;
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
    setPreferredSize(size);
    setMinimumSize(size);
    setMaximumSize(size);
    setSize(size);
    setLayout(null);    
  }

  public void paintComponent(Graphics g) {
    g.drawImage(img, 0, 0, null);
  }

}


Das Ganze wird so verwendet:

Java:
	public void setSelectedFiles(File[] myFiles)
	{
		ImagePanel myImg = new ImagePanel(myFiles[0].getAbsolutePath());
		
		JPanel imgPanel = myView.getImagesPanel();
		imgPanel.add(myImg);
	}

imgPanel ist das "parent" Panel, auf dem später die ImagePanels dazugepackt werden sollen.
Mein Code wird ohne Fehler ausgeführt, in der GUI erscheint das Bild aber nicht. Könnte mir jemand sagen, was ich falsch mache?

Danke!
 
Damit hast du mir schon geholfen! Ich hatte das Layout vergessen.
Welches bietet sich am besten an, wenn später mehrere Bilder nebeneinander angezeigt werden sollen? Also x pro Zeile in y Reihen.

Bin ich dann am besten mit dem GridLayout unterwegs?

Danke!
 

Zurück
Oben