Java: Bild einlesen und anzeigen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Java: Bild einlesen und anzeigen

    Hi,

    ich möchte in einem Programm Bilder manipulieren können.

    Dazu soll es möglich sein, ein leeres Bild zu erstellen bzw. ein vorhandenes einzulesen. Das klappt momentan auch, allerdings habe ich große Probleme mit dem Anzeigen!

    Code:
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.io.File;
    
    import javax.swing.JComponent;
    import javax.swing.JPanel;
    
    class ViewPanel extends JPanel
    {
      private Image image;
       
      public void setImage( File file )
      {
        image = Toolkit.getDefaultToolkit().getImage( file.getAbsolutePath() );
        if ( image != null )
        {  
        	this.setPreferredSize(new Dimension(this.image.getWidth(null), this.image.getHeight(null)));
    		this.setSize(new Dimension(this.image.getWidth(null), this.image.getHeight(null)));
        	repaint();
        }
      }
      
      public void setImage(Image img)
      {
    	  if(img != null)
    	  {
    		  this.image = img;
    		  this.setPreferredSize(new Dimension(this.image.getWidth(null), this.image.getHeight(null)));
    		  this.setSize(new Dimension(this.image.getWidth(null), this.image.getHeight(null)));
    	  }
    	  else
    	  {
    		  System.out.println("no");
    	  }
    	  this.repaint();
      }
      
      public Image getImage()
      {
    	 return this.image;
      }
      
      protected void paintComponent( Graphics g )
      {
        if ( image != null )
          g.drawImage( image, 0, 0, image.getWidth(null), image.getHeight(null), this );
      }
    }
    setImage nimmt entweder ein Image-Objekt oder eine Datei an.

    Ein Objekt der oben geposteten Klasse habe ich direkt auf meinen JFrame geklatscht. Ein Layoutmanager wird vorerst nicht benutzt, um das schonmal als Fehlerquelle auszuschließen.

    Das Problem ist jetzt, dass das Bild nicht angezeigt wird, wenn setImage() ausgeführt wurde. Es wird erst angezeigt, wenn ich das Fenster manuell größer ziehe.

    Weiß jemand, wie ich es hinbekomme, dass das Bild automatisch in voller Größe angezeigt wird?

    MfG
    Simon
    Tempim.de - Dein kostenloser Bildhoster
    Tipps und Tricks für Webmaster

  • #2
    Lass das Fenster mal nach dem setImage() neu zeichnen.

    Kommentar


    • #3
      Ich weiß nicht, woran genau es jetzt lag. Aber jetzt funktioniert es...
      Tempim.de - Dein kostenloser Bildhoster
      Tipps und Tricks für Webmaster

      Kommentar

      Lädt...
      X