Es ist wahrscheinlich am einfachsten, die Image
in eine ImageIcon
zu laden und in einem JLabel
zeigen jedoch:
Um direkt ‚zeichnen‘ das Bild auf die JPanel, überschreiben die paintComponent(Graphics)
Methode des JPanel zu so etwas wie die folgenden:
wo img
ist ein Image
(möglicherweise über die ImageIO.read()
Aufruf geladen).
Graphics#drawImage
ist ein stark überladener Befehl, mit dem Sie sehr genau festlegen können, wie, wie viel und wo Sie das Bild an die Komponente malen.
Sie können auch 'Phantasie' und skalieren Sie das Bild zu Ihrem Angenehm mit der Image#getScaledInstance
Methode. Dies erfordert einen -1
entweder für den width
oder den height
Parameter, um das Seitenverhältnis des Bildes gleich zu halten.
Putting es in einer Phantasie Art:
public void paintComponent(Graphics page)
{
super.paintComponent(page);
int h = img.getHeight(null);
int w = img.getWidth(null);
// Scale Horizontally:
if (w > this.getWidth())
{
img = img.getScaledInstance(getWidth(), -1, Image.SCALE_DEFAULT);
h = img.getHeight(null);
}
// Scale Vertically:
if (h > this.getHeight())
{
img = img.getScaledInstance(-1, getHeight(), Image.SCALE_DEFAULT);
}
// Center Images
int x = (getWidth() - img.getWidth(null))/2;
int y = (getHeight() - img.getHeight(null))/2;
// Draw it
page.drawImage(img, x, y, null);
}
Ich würde verwenden eine [JImagePanel] (https://github.com/dberm22/DBoard/blob/master/src/com/dberm22/utils/ JImagePanel.java). Sollte alles tun, was Sie brauchen, – dberm22