[英]Setting the background using a JLabel and an image inserted into it
我一直在做一個有趣的小項目,我目前正在研究背景,但它真的很小,要改變這一點,我將尺寸設置為最大屏幕尺寸(該項目是全屏的)
public void setBackground(JLabel bg) {
bg = new JLabel(new ImageIcon(this.getClass().getResource("/Background.gif")));
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int width = (int) d.getWidth();
int height = (int) d.getHeight();
bg.setSize(width, height);
add(bg);
}
但是,它確實增加了 JLabel 的大小,而不是實際的圖像大小,這是為什么?
編輯:
我找到了一種方法來做到這一點,但它似乎沒有找到指定的路徑! 我已經創建了一個資源文件夾來存儲它(eclipse 中的一個源文件夾)我把它放在那里,但它無法讀取輸入文件。
public void setBackground(JLabel bg) {
try {
img = ImageIO.read(new File("/Background.gif"));
} catch(Exception e) {
e.printStackTrace();
}
ImageIcon imgi = new ImageIcon(fitimage(img, bg.getWidth(), bg.getHeight()));
bg.setIcon(imgi);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int width = (int) d.getWidth();
int height = (int) d.getHeight();
bg.setSize(width, height);
add(bg);
}
private Image fitimage(Image img , int w , int h) {
BufferedImage resizedimage = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = resizedimage.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(img, 0, 0,w,h,null);
g2.dispose();
return resizedimage;
}
在您的應用程序中使用它之前,您可能需要先調整圖像的大小。 它必須與您的標簽尺寸相同。 無論您的圖像的實際大小是多少,這就是 Java 將其顯示為的大小,並且不會分別根據您的標簽自動調整大小
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.