Hallo zusammen,
ich habe ein kleines Problem beim Anzeigen von Bildern in einem JInternalFrame. Der Code ist so aufgebaut das ich einen JInternalFrame habe auf dem ich meine Bildklasse adde, die selbst im grunde nichts anderes tut als Component zu extenden und das entsprechende Bild zu laden. Das Problem was hierbei auftritt ist, dass das Bild zwar korrekt geladen wird, aber erst bei erneutem "aktivieren"/"anklicken" des entsprechenden JInternalFrames auf den es geadded wird auch angezeigt wird. Der Code für die Bildklasse ist:
Von dieser Klasse erzeuge ich eine normale Instanz via Aufruf des Konstruktors und adde Diese Instanz
auf einen normalen JInternalFrame:
Das Problem was hierbei auftritt, ist wie schon gesagt, dass das Bild erst angezeigt wird, sobald ich den JInternalFrame verschiebe/grösse verändere/manipuliere. Vergesse ich hier irgend einen refresh oder repaint irgendwo? Hab es schon damit versucht den JInternalFrame nach dem erzeugen der Bildklasse zu repaint() en, aber leider ohne Erfolg. Ich muss hierzu sagen das ich mit den Möglichkeiten von Java bezüglich der Klassen zur Zeichnung von Bildern faktisch nicht auskenne und der Code mehr oder weniger aus Tutorials zusammengeschnippelt ist. Falls jemand ein kompetentes Tutorial, dass eine Übersicht der Java graphics Klassen und deren Verwendung zur Hand hat, wär ich dankbar dafür. Die bisherigen Tutorials die ich zu der Thematik gefunden habe waren leider alle sehr lokal gehalten und gaben keinen guten Gesamtüberblick, welche Klassen man an welcher Stelle, auf welche Art benutzen sollte.
ich habe ein kleines Problem beim Anzeigen von Bildern in einem JInternalFrame. Der Code ist so aufgebaut das ich einen JInternalFrame habe auf dem ich meine Bildklasse adde, die selbst im grunde nichts anderes tut als Component zu extenden und das entsprechende Bild zu laden. Das Problem was hierbei auftritt ist, dass das Bild zwar korrekt geladen wird, aber erst bei erneutem "aktivieren"/"anklicken" des entsprechenden JInternalFrames auf den es geadded wird auch angezeigt wird. Der Code für die Bildklasse ist:
Java:
import java.awt.Component;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageComponent extends Component{
BufferedImage img;
public void paint(Graphics g) {
g.drawImage(img, 0, 0, null);
}
public ImageComponent(File image) {
try {
img = ImageIO.read(image);
} catch (IOException e) {
// exception schreiben
}
}
}
Von dieser Klasse erzeuge ich eine normale Instanz via Aufruf des Konstruktors und adde Diese Instanz
auf einen normalen JInternalFrame:
Java:
private InternalViewerFrame viewerFrame = new InternalViewerFrame(this);
viewerFrame.add(new ImageComponent(irgendeinBild));
Das Problem was hierbei auftritt, ist wie schon gesagt, dass das Bild erst angezeigt wird, sobald ich den JInternalFrame verschiebe/grösse verändere/manipuliere. Vergesse ich hier irgend einen refresh oder repaint irgendwo? Hab es schon damit versucht den JInternalFrame nach dem erzeugen der Bildklasse zu repaint() en, aber leider ohne Erfolg. Ich muss hierzu sagen das ich mit den Möglichkeiten von Java bezüglich der Klassen zur Zeichnung von Bildern faktisch nicht auskenne und der Code mehr oder weniger aus Tutorials zusammengeschnippelt ist. Falls jemand ein kompetentes Tutorial, dass eine Übersicht der Java graphics Klassen und deren Verwendung zur Hand hat, wär ich dankbar dafür. Die bisherigen Tutorials die ich zu der Thematik gefunden habe waren leider alle sehr lokal gehalten und gaben keinen guten Gesamtüberblick, welche Klassen man an welcher Stelle, auf welche Art benutzen sollte.
Zuletzt bearbeitet: