Nó có lẽ là dễ nhất để tải các Image
thành một ImageIcon
và hiển thị nó trong một JLabel
, tuy nhiên:
Trực tiếp 'vẽ' hình ảnh đến JPanel, ghi đè phương pháp paintComponent(Graphics)
của JPanel một cái gì đó như sau:
public void paintComponent(Graphics page)
{
super.paintComponent(page);
page.drawImage(img, 0, 0, null);
}
nơi img
là Image
(có thể được tải thông qua cuộc gọi ImageIO.read()
).
Graphics#drawImage
là một lệnh quá tải nặng sẽ cho phép bạn đặc biệt cụ thể về cách thức, mức độ và vị trí bạn vẽ hình ảnh cho thành phần.
Bạn cũng có thể sử dụng phương pháp Image#getScaledInstance
. Việc này sẽ mất -1
cho thông số width
hoặc height
để giữ tỷ lệ khung hình của hình ảnh giống nhau.
Đưa nó trong một cách ưa thích hơn:
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);
}
Nguồn
2010-10-29 12:12:21
Tôi sẽ sử dụng một [JImagePanel] (https://github.com/dberm22/DBoard/blob/master/src/com/dberm22/utils/ JImagePanel.java). Nên làm mọi thứ bạn cần, – dberm22