mbah_bejo

display

Jan 11th, 2021
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.54 KB | None | 0 0
  1. /**
  2.  *  Sesuai namanya, Class ini menjadi display (UI) gambar pada program ini
  3.  *
  4.  *  Author  : Thomas Dwi Awaka
  5.  *  Version : 1
  6.  */
  7.  
  8. package twibboner;
  9.  
  10. import javax.imageio.ImageIO;
  11. import javax.swing.*;
  12. import java.awt.*;
  13. import java.awt.image.BufferedImage;
  14. import java.awt.image.ImageObserver;
  15. import java.io.File;
  16. import java.io.IOException;
  17.  
  18. public class display extends JPanel implements ImageObserver {
  19.  
  20.     private Image gambar,twbn;
  21.     private int batasLebar = 1020;
  22.     private int batasTinggi = 660;
  23.     static int lebarBaru,tinggiBaru;
  24.  
  25.     //----------------------------------------------------------//
  26.  
  27.     //constructor
  28.     public display() {
  29.         draw();
  30.     }
  31.  
  32.     /**
  33.      * membaca file gambar dan merubah ukurannya
  34.      * @param file gambar yang akan dibaca
  35.      */
  36.     public void setGambar(String file) {
  37.         try {
  38.             this.gambar = ImageIO.read(new File(file));
  39.             twibbon.gambar = this.gambar;
  40.  
  41.             //di-resize sesuai dengan batas lebar & tinggi
  42.             Dimension resizedDimensions = twibbon.resize(gambar.getWidth(null),
  43.                     gambar.getHeight(null), batasLebar, batasTinggi);
  44.             lebarBaru = resizedDimensions.width;
  45.             tinggiBaru = resizedDimensions.height;
  46.  
  47.         } catch (IOException e) {}
  48.     }
  49.  
  50.     /**
  51.      * membaca file twibbon dan merubah ukurannya
  52.      * @param file twibbon
  53.      */
  54.     public void setTwbn(String file) {
  55.         try {
  56.             this.twbn = ImageIO.read(new File(file));
  57.             twibbon.twbn = this.twbn;
  58.         } catch (IOException e) {}
  59.     }
  60.  
  61.     /**
  62.      * membuat layout dari seluruh isi program ini
  63.      */
  64.     public void draw() {
  65.  
  66.         // menciptakan layout
  67.         setLayout(new BorderLayout());
  68.         this.setPreferredSize(new Dimension(1080, 720));
  69.         revalidate();
  70.         repaint();
  71.         this.setVisible(true);
  72.  
  73.         this.add(new drawG2D());
  74.  
  75.         // untuk gambar yang akan muncul di display
  76.         BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
  77.         Graphics2D g = (Graphics2D) image.getGraphics();
  78.         paintComponent(g);
  79.     }
  80.  
  81.     /**
  82.      * Proses Rendering gambar di layout
  83.      */
  84.     private class drawG2D extends JComponent {
  85.  
  86.         @Override
  87.         protected void paintComponent(Graphics g) {
  88.  
  89.             Graphics2D graphics2D = (Graphics2D) g;
  90.             // mengontrol kualitas & waktu rendering gambar dan text
  91.             graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  92.             graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
  93.  
  94.             //memb-draw background preview
  95.             graphics2D.setColor(Color.PINK);
  96.             graphics2D.fillRect(0, 30, batasLebar, batasTinggi);
  97.  
  98.             //mem-draw gambar yang telah di-resize
  99.             graphics2D.drawImage(twibbon.getGambar(), (batasLebar - lebarBaru) / 2,
  100.                     (batasTinggi - tinggiBaru) / 2 + 30, lebarBaru, tinggiBaru, null);
  101.  
  102.             // untuk tulisan di atas kotak preview
  103.             graphics2D.setColor(Color.BLACK);
  104.             Font font = new Font("Montserrat", Font.BOLD, 20);
  105.             FontMetrics metrics = g.getFontMetrics(font);
  106.  
  107.             //untuk membuat posisi teks selalu ditengah
  108.             int x = (batasLebar - metrics.stringWidth(detailPanel.pesanSistem))/2;
  109.             graphics2D.setFont(font);
  110.             graphics2D.drawString(detailPanel.pesanSistem,x, 20);
  111.         }
  112.     }
  113. }
Add Comment
Please, Sign In to add comment