Membuat background image pada Frame/Panel di Java

Post ini gw bwt atas request dari seseorang.. Ini mbak, buat background image di Form Java.

Pada swing di Java, tidak disediakan objek khusus untuk membuat background image, biasanya orang2 banyak menggunakan JLabel, dan mengatur di property imageicon untuk bisa membuat suatu halaman bergambar. Nah, masalahnya objek di Java tidak bisa ditimpa dengan objek lainnya, jadi kita tidak bisa meletakkan button di atas label, atau yang lainnya. Background pada frame/panel bisa kita akali dengan membuat suatu kelas baru yang nantinya kita gunakan pada kelas panel yang ingin kita isi (tampilan menu utama). Langkah-langkahnya sebagai berikut:

- Buat sebuah kelas baru, dengan nama IsiPanel.java


package gui;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
class IsiPanel extends javax.swing.JPanel {
 /**
  * @author : Fajar Saptono
 **/
    Image bgimage = null;
    IsiPanel(String namaGambar){
        if(namaGambar != null) {
            MediaTracker mt = new MediaTracker(this);
            bgimage = Toolkit.getDefaultToolkit().getImage(getClass().getResource(namaGambar));//namaGambar
            mt.addImage(bgimage, 0);
            try {
                mt.waitForAll();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if(bgimage != null) {
            int imwidth = bgimage.getWidth(null);
            int imheight = bgimage.getHeight(null);
            if((imwidth > 0) && (imheight > 0)) {
                for(int y = 0; y<getHeight(); y+=imheight) {
                    for(int x = 0; x<getWidth(); x+=imwidth) {
                        g.drawImage(bgimage, x, y, null);
                    }
                }
            }
        }
    }

- Kemudian pada konstruktor form utama, tambahkan kode berikut



setContentPane(new IsiPanel("img/bg.png"));
</span><span style="font-size:10pt;">

- Nah, kamu udah bikin kelas utama dengan background berisi gambar yang ada di path img/bg.png. Selamat mencobaJ

2 comments so far

  1. vee on

    or u can use JLayeredPane. disitu bs bikin layer2 atas component2 yang mau ditaro ‘tumpang-tindih’.

  2. Fajar Saptono on

    JLayeredPane? wahh terimakasih @vee..solusi baru inih, saya baru denger


Leave a reply