簡體   English   中英

使用 JLabel 設置背景並插入圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM