Java Reference
In-Depth Information
public void setImage(BufferedImage img) {
this.image = img;
setPreferredSize(new Dimension(image.getWidth(), image.getHeight()));
repaint();
invalidate();
}
@Override
protected void paintComponent(Graphics g) {
if (image != null)
g.drawImage(image, 0, 0, this);
}
}
Listing 12.15 ImageComponent von JComponent abgeleitet
Die abgeleitete Komponente besitzt ein zusätzliches Attribut vom Typ BufferedImage
zur Aufnahme eines Bildes. Der Konstruktor ruft lediglich den Konstruktor der Basis-
klasse auf. Die Setter-Methode setImage übernimmt als Argument ein BufferedImage .
Damit lässt sich ein neues Bild zuordnen. Hat sich das Bild geändert, sollte auch die
Eigenschaft PreferredSize mit dem entsprechenden Setter angepasst werden. In diesem
Attribut wird die Größe festgehalten, die gerade ausreicht, die Komponente komplett
darzustellen. Der Aufruf von repaint() sorgt für das Neuzeichnen der Komponente,
damit das neue Bild auch sichtbar wird. Schließlich wird mit invalidate() der gesamte
Bereich der Komponente als ungültig erklärt, damit beim nächsten Neuzeichnen der
gesamte Bereich neu gezeichnet wird.
Die Methode paintComponent , die für das Zeichnen der Komponente zuständig ist, muss
überschrieben werden. Ihr wird ein Objekt der Klasse Graphics übergeben. Diese Klasse
besitzt zahlreiche Methoden zum Zeichnen auf unterschiedlichsten Geräten. Wenn die
Komponente ein Bild enthält, wird es in die Komponente ( this ) mit dem Ursprung x = 0,
y = 0, d. h. in die linke obere Ecke gezeichnet. Da PreferredSize auf die Bildgröße gesetzt
wurde, füllt das Bild die gesamte Komponente aus.
Die erstellte Komponente ist als Nachkomme von JComponent geeignet, um in einem
JScrollPane -Behälter untergebracht zu werden. Der Frame der Anwendung sollte seine
Größe an dem darzustellenden Bild ausrichten, und das Bild sollte innerhalb des Frames
immer zentral platziert sein. Beim Vergrößern oder Verkleinern des Frames durch den
Anwender sollte das Bild seine Größe entsprechend mit ändern. Dadurch wird es dann
aber unter Umständen erforderlich, Scrollbalken einzublenden. Die letzte Aufgabe
Search WWH ::




Custom Search