/**
* ImagePanel adalah komponen Swing yang dapat menampilkan gambar OFImage. Ini dibangun sebagai
* subclass dari JComponent dengan fungsionalitas tambahan dari pengaturan OFImage yang
* akan ditampilkan di permukaan komponen ini.
*
* @author Timotius Wirawan
* @version 05/12/2020
*/
import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
public class ImagePanel extends JComponent
{
//lebar dan tinggi saat ini dari panel ini
private int width, height;
//Internal image buffer untuk painting yang akan ditampilkan di layar
private OFImage panelImage;
//Membuat ImagepPanel baru yang kosong
public ImagePanel()
{
width = 360; // Ukuran panel kosongan bebas
height = 240;
panelImage = null;
}
/**
* Mengatur gambar yang akan ditampilkan di panel
*
* @param image Gambar yang akan ditampilkan
*/
public void setImage(OFImage image)
{
if (image != null)
{
width = image.getWidth();
height = image.getHeight();
panelImage = image;
repaint();
}
}
//Membersihkan gambar di panel
public void clearImage()
{
Graphics imageGraphics = panelImage.getGraphics();
imageGraphics.setColor(Color.LIGHT_GRAY);
imageGraphics.fillRect(0, 0, width, height);
repaint();
}
// Mehod berikut merupakan definisi ulangdari metode yang diwarisi dari superclass
/**
* Memberi tahu seberapa besar lauout yang diinginkan
*
* @return Dimensi yang dipilih untuk komponen ini
*/
public Dimension getPreferredSize()
{
return new Dimension(width, height);
}
/**
* Komponen ini perlu ditampilkan kembali. Salin gambar internal ke layar.
*
* @param g Konteks grafik yang dapat digunakan untuk menggambar pada komponen ini.
*/
public void paintComponent(Graphics g)
{
Dimension size = getSize();
g.clearRect(0, 0, size.width, size.height);
if (panelImage != null)
{
g.drawImage(panelImage, 0, 0, null);
}
}
}