Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Java: Bild einlesen und anzeigen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Java: Bild einlesen und anzeigen


 
Seggl-hoch-drei
19-11-2009, 23:07 
 
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!


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

 
TobiaZ
20-11-2009, 01:18 
 
Lass das Fenster mal nach dem setImage() neu zeichnen.

 
Seggl-hoch-drei
22-11-2009, 20:58 
 
Ich weiß nicht, woran genau es jetzt lag. Aber jetzt funktioniert es...

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:45 Uhr.