document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1.  
  2. /**
  3.  * ImagePanel merupakan Swing component yang dapat ditampilkan di OFImage.
  4.  * Kelas ini dikonstruksikan sebagai subclass dari JComponent dengan tambahan fungsi
  5.  * setting OFImage yang akan ditampilkan pada permukaan komponen ini.
  6.  *
  7.  * @author Daffa amanullah Setyawan
  8.  * @version 7 Desember 2020
  9.  */
  10.  
  11. import java.awt.*;
  12. import javax.swing.*;
  13. import java.awt.image.*;
  14. public class ImagePanel extends JComponent
  15. {
  16.     // The current width and height of this panel
  17.     private int width,height;
  18.    
  19.     // Sebuah image buffer internal yang digunakan untuk melukis.
  20.     // Untuk tampilan sebenarnya, image buffer lalu disalin ke layar
  21.     private OFImage panelImage;
  22.    
  23.     /**
  24.      * Buat ImagePanel baru yang kosong
  25.      */
  26.     public ImagePanel ()
  27.     {
  28.         width = 360;     // arbitrary size for empty panel
  29.         height = 240;
  30.         panelImage = null;
  31.     }
  32.    
  33.     /**
  34.      * Memilih gambar yang akan ditampilkan
  35.      * @param image Gambar yang ditampilkan
  36.      */
  37.     public void setImage (OFImage image)
  38.     {
  39.         if (image != null)
  40.         {
  41.             width = image.getWidth();
  42.             height = image.getHeight();
  43.             panelImage = image;
  44.             repaint ();
  45.         }
  46.     }
  47.    
  48.    /**
  49.     * Menghilangkan gambar pada panel
  50.     */
  51.    public void clearImage(){
  52.         Graphics imageGraphics = panelImage.getGraphics();
  53.         imageGraphics.setColor(Color.LIGHT_GRAY);
  54.         imageGraphics.fillRect(0, 0, width, height);
  55.         repaint();
  56.     }
  57.    
  58.     // Metode berikut adalah redefinisi metode
  59.     // didapat dari superclasses.
  60.    
  61.     /**
  62.      * Menginfokan ke layout manager berapa besar yang diinginkan.
  63.      * Buat ke layout manager berapa besar yg kita inginkan.
  64.      * (Metode ini dipanggil oleh layout manager untuk menempatkan komponen).
  65.      * @return Dimensi yang di-prefer.
  66.      */
  67.     public Dimension getPreferredSize(){
  68.         return new Dimension(width, height);
  69.     }
  70.    
  71.     /**
  72.      * Komponen perlu ditampilkan lagi. Menyalin internal image ke layar.
  73.      * (Metode ini dipanggil oleh Swing screen painter setiap kali hendak
  74.      * menampilkan komponen)
  75.      * @param g Graphics context yang dapat digunakan untuk menggambar pada komponen.
  76.      */
  77.     public void paintComponent(Graphics g){
  78.         Dimension size = getSize();
  79.         g.clearRect(0, 0, size.width, size.height);
  80.         if(panelImage != null) {
  81.             g.drawImage(panelImage, 0, 0, null);
  82.         }
  83.     }
  84. }
');