/**
* ImagePanel adalah Swing Component yang bisa menampilkan OFImage.
* ini terkonstruksi sebagai subclass dari JComponent dengan tambahan fungsional
*
* @author Muhammad Bagus Istighfar
* @version 10 Desember 2020
*/
import javax.swing.*;
import java.awt.*;
public class ImagePanel extends JComponent
{
//panjang dan lebar dari panel sekarang
private int width, height;
/**sebuah internal image buffer untuk painting.
*untuk displaynya, image buffer ini di-copy ke layar
*/
private OFImage panelImage;
/**
* membuat ImagePanel yang baru dan kosong
*/
public ImagePanel(){
width = 1280; //ukuran ini bebas ya untuk panel kosong
height = 720;
panelImage =null;
}
/**
* mengatur gambar yang akan ditampilkan
* @param image
*/
public void setImage(OFImage image){
if(image!=null){
width = image.getWidth();
height = image.getHeight();
panelImage = image;
repaint();
}
}
/**
* menghapus gambar pada panel
*/
public void clearImage()
{
Graphics imageGraphics = panelImage.getGraphics();
imageGraphics.setColor(Color.LIGHT_GRAY);
imageGraphics.fillRect(0,0, width,height);
repaint();
}
// metode di bawah ini merupakan warisan(inherited)
// dari superclass
/**
* memberitahu layout manager bagaimana besar yang kita mau
* (method ini dipanggi oleh layout manager untuk menaruh
* komponen)
*
* @return dimensi yang cocok untuk komponen
*/
public Dimension getPreferredSize(){
return new Dimension(width,height);
}
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);
}
}
}