Java Applet biasanya digunakan untuk menampilkan gambar yang disimpan dalam file GIF. Sangat mudah untuk memuat gambar GIF di Java Applet. Saat menggunakan file gambar di Applet, Anda perlu mendefinisikan objek Gambar. Kebanyakan Java Applet menggunakan file gambar dalam format GIF atau JPEG. Applet menggunakan metode getImage untuk mengaitkan file gambar dengan objek Gambar.
Metode drawImage dari kelas Graphics digunakan untuk menampilkan objek Gambar. Untuk meningkatkan efek tampilan gambar, banyak Applet menggunakan teknologi buffering ganda: pertama memuat gambar ke dalam memori, lalu menampilkannya di layar.
Applet dapat menentukan berapa banyak gambar yang sudah ada di memori melalui metode imageUpdate.
Memuat gambar
Java memperlakukan gambar sebagai objek Gambar, jadi saat memuat gambar, Anda harus terlebih dahulu mendefinisikan objek Gambar. Formatnya adalah sebagai berikut:
Gambar
gambar;
gambar=getImage(getCodeBase( ),"ImageFileName.GIF");
Metode getImage memiliki dua parameter. Parameter pertama adalah panggilan ke metode getCodeBase, yang mengembalikan alamat URL Applet, seperti www.sun.com/Applet . Parameter kedua menentukan nama file gambar yang akan dimuat dari URL. Jika file gambar terletak di subdirektori di bawah Applet, jalur direktori yang sesuai harus disertakan dalam nama file.
Setelah memuat gambar menggunakan metode getImage, Applet dapat menggunakan metode drawImage dari kelas Grafik untuk menampilkan gambar. Bentuknya adalah sebagai berikut:
g.drawImage
(Picture,x,y,this);
tentukan gambar yang akan ditampilkan. Koordinat x dan y pojok kiri atas gambar dan ini.
Tujuan dari parameter keempat adalah untuk menentukan objek yang mengimplementasikan antarmuka ImageObServer, yaitu objek yang mendefinisikan metode imageUpdate (metode ini akan dibahas nanti).
Tampilan gambar (ShowImage.java)
//Daftar program sumber
import java.awt.*;
import java.applet.*;
ShowImage kelas publik memperluas Applet
Gambar gambar; //Tentukan variabel anggota bertipe Gambar
kekosongan publik init()
{
gambar=getImage(getCodeBase(),"Image.gif"); //Muat gambar
}
cat void publik (Gambar g)
{
g.drawImage(gambar,0,0,ini); //Tampilkan gambar
}
}
Oleh karena itu, pernyataan tentang Applet pada file HTML adalah sebagai berikut:
<HTML>
<TITLE>Tampilkan Applet Gambar</TITLE>
<APPLET
CODE="ShowImage.class" //Nama file kelasnya adalah ShowImage.class
LEBAR=600
TINGGI=400>
</APPLET>
</HTML>
Saat menjalankan applet setelah kompilasi, gambar tidak sekaligus. Ini karena program tidak memuat dan menampilkan gambar secara lengkap sebelum metode drawImage kembali. Sebaliknya, metode drawImage membuat thread yang dijalankan secara bersamaan dengan thread eksekusi asli Applet. Ini dimuat dan ditampilkan pada saat yang sama, sehingga menciptakan diskontinuitas ini. Untuk meningkatkan efek tampilan. Banyak Applet yang menggunakan teknologi buffering ganda gambar, yaitu gambar dimuat seluruhnya ke dalam memori dan kemudian ditampilkan di layar, sehingga gambar dapat ditampilkan sekaligus.
Gambar buffering ganda
Untuk meningkatkan efek tampilan gambar, teknologi buffering ganda harus digunakan. Gambar pertama kali dimuat ke dalam memori dan kemudian ditampilkan di jendela Applet.
Contoh penggunaan teknologi gambar buffering ganda (BackgroundImage.java)
//Daftar program sumber
import java.awt.*;
import java.applet.*;
BackgroundImage kelas publik memperluas Applet // Mewarisi Applet
{
gambar gambar;
Boolean ImageLoaded=salah;
kekosongan publik init()
{
picture=getImage(getCodeBase(),"Image.gif"); //Muat gambar Gambar offScreenImage=createImage(size().width,size().height);
//Membuat objek Gambar Grafik menggunakan metode createImage offScreenGC=offScreenImage.getGraphics(); //Mendapatkan objek Grafik offScreenGC.drawImage(picture,0,0,this);
cat void publik (Gambar g)
{
jika (Gambar Dimuat)
{
g.drawImage(picture,0,0,null); //Tampilkan gambar, parameter keempat adalah null, bukan ini
showStatus("Selesai");
}
kalau tidak
showStatus("Memuat gambar");
}
pembaruan gambar boolean publik(Gambar img,int infoflags,int x,int y,int w,int h)
{
if(infoflag= =SEMUA BIT)
{
gambarDimuat=benar;
mengecat ulang();
kembali salah;
}
kalau tidak
kembali benar;
}
}
Analisis metode init dari Applet menunjukkan bahwa metode tersebut pertama-tama mendefinisikan objek Gambar bernama offScreenImage dan memberinya nilai kembalian dari metode createImage, lalu membuat objek Grafik bernama offScreenGC dan menetapkannya lingkungan grafis - non-layar gambar. Karena gambar di luar layar digambar di sini, tidak akan ada gambar yang ditampilkan di jendela Applet.
Setiap kali Applet memanggil metode drawImage, drawImage akan membuat thread yang memanggil metode imageUpdate. Applet dapat menentukan berapa banyak gambar yang telah dimuat ke dalam memori dalam metode imageUpdate. Thread yang dibuat oleh drawImage terus memanggil metode imageUpdate hingga metode tersebut mengembalikan false.
Infoflags parameter kedua dari metode imageUpdate memungkinkan Applet mengetahui bagaimana gambar dimuat ke dalam memori. Parameter ini sama dengan ImageLoaded dan disetel ke true dan metode pengecatan ulang dipanggil untuk menggambar ulang jendela Applet. Metode ini pada akhirnya mengembalikan false untuk mencegah thread eksekusi drawImage memanggil metode imageUpdate lagi.
Pengoperasian Applet dalam metode paint dikendalikan oleh variabel ImageLoaded. Ketika variabel ini menjadi benar, metode paint memanggil metode drawImage untuk menampilkan gambar. Saat metode paint memanggil metode drawImage, dibutuhkan null sebagai parameter keempat, yang mencegah drawImage memanggil metode imageUpdate. Karena gambar telah dimuat ke dalam memori saat ini, tampilan gambar di jendela Applet dapat diselesaikan sekaligus.