首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java Swing 窗體添加背景圖片完整教程(含透明面板技巧)

     編輯:Java 綜合教學

Java Swing 窗體添加背景圖片完整教程(含透明面板技巧)

在 Swing 應用中為 JFrame 設置背景圖片是常見需求,關鍵在於利用分層面板 JLayeredPane 將圖片標籤置於最底層,並將內容面板設置為透明。下面分步驟講解完整實現。

核心步驟

  1. 導入包:java.awt.*、javax.swing.*。
  2. 創建窗體並可見:JFrame frame = new JFrame(); frame.setVisible(true);
  3. 加載圖片到標籤:ImageIcon img = new ImageIcon("E:\\1.gif"); JLabel imgLabel = new JLabel(img);
  4. 關鍵:添加到分層面板最底層:
    frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
  5. 設置標籤大小覆蓋整個窗體:
    imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
  6. 關鍵:將內容面板設置為透明:
    Container cp = frame.getContentPane();
    cp.setLayout(new BorderLayout());
    ((JPanel) cp).setOpaque(false); // 透明,讓底層圖片顯示出來

完整可運行代碼

package 第八章;

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MyFirstFrame extends JFrame {
    private static final long serialVersionUID = 1L;

    public static void main(String[] args) {
        MyFirstFrame frame = new MyFirstFrame();
        frame.setVisible(true);

        // 背景圖片 7 行核心代碼
        ImageIcon img = new ImageIcon("E:\\1.gif");
        JLabel imgLabel = new JLabel(img);
        frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
        imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
        Container cp = frame.getContentPane();
        cp.setLayout(new BorderLayout());
        ((JPanel) cp).setOpaque(false);
    }

    public MyFirstFrame() {
        super();
        setTitle("利用 JFrame 類創建的窗體");
        setBounds(100, 100, 315, 320);
        getContentPane().setLayout(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

常見坑點提示

  • 圖片路徑使用雙反斜杠 \\ 或正斜杠 /。
  • 必須將內容面板 setOpaque(false),否則不透明面板會遮蓋背景。
  • 分層面板層級用 Integer.MIN_VALUE 確保圖片在最底層。
  • 若窗體大小可變,需監聽 ComponentAdapter 動態調整 imgLabel 大小。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved