mbah_bejo

ImageViewer

Nov 23rd, 2020
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.72 KB | None | 0 0
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.KeyEvent;
  6. import java.io.File;
  7.  
  8. /**
  9.  * ImageViewer adalah main  class dari aplikasi image viewer. ini membangun dan
  10.  * menampilkan aplikasi GUI dan inisialisasi semua komponen lainnya.
  11.  *
  12.  * untuk memulai aplikasi ini, buat sebuah objek dari class ini
  13.  */
  14. public class ImageViewer {
  15. //    static fields:
  16.     private static final String VERSION = "Version 1.0";
  17.     private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));
  18.  
  19. //    fields:
  20.     private JFrame frame;
  21.     private JLabel filenameLabel;
  22.     private ImagePanel imagePanel;
  23.     private JLabel statusLabel;
  24.     private OFImage currentImage;
  25.  
  26.     /**
  27.      * membuat ImageViewer yang ditampilkan dilayar
  28.      */
  29.     public ImageViewer(){
  30.         currentImage = null;
  31.         makeFrame();
  32.     }
  33. //    ------- implementasi fungsi menu --------
  34.     /**
  35.      * fungsi Open : membuka file chooser untuk memilih file gambar baru
  36.      */
  37.     private void openFile()
  38.     {
  39.         int returnVal = fileChooser.showOpenDialog(frame);
  40.         if(returnVal != JFileChooser.APPROVE_OPTION){
  41.             return; // dibatalkan
  42.         }
  43.         File selectedFile = fileChooser.getSelectedFile();
  44.         currentImage = ImageFileManager.loadImage(selectedFile);
  45.  
  46.         if(currentImage == null) // jika filenya invalid
  47.         {
  48.             JOptionPane.showMessageDialog(frame,
  49.                     "File gambar ini tidak dikenal",
  50.                     "Image Load Error",
  51.                     JOptionPane.ERROR_MESSAGE);
  52.             return;
  53.         }
  54.         imagePanel.setImage(currentImage);
  55.         showFilename(selectedFile.getPath());
  56.         showStatus("File Loaded.");
  57.         frame.pack();
  58.     }
  59.  
  60.     /**
  61.      * fungsi close : menutup gambar sekarang
  62.      */
  63.     private void  close(){
  64.         currentImage = null;
  65.         imagePanel.clearImage();
  66.         showFilename(null);
  67.     }
  68.  
  69.     /**
  70.      * fungsi Quit : untuk keluar aplikasi
  71.      */
  72.     private void quit(){
  73.         System.exit(0);
  74.     }
  75.  
  76.     /**
  77.      * fungsi darker : untuk membuat gambar lebih gelap
  78.      */
  79.     private void makeDarker(){
  80.         if(currentImage !=null){
  81.             currentImage.darker();
  82.             frame.repaint();
  83.             showStatus("Applied : Darker");
  84.         }else{
  85.             showStatus("Tidak ada gambar yang dimasukkan");
  86.         }
  87.     }
  88.  
  89.     /**
  90.      * fungsi Lighter : untuk membuat gambar lebih terang dari masa depanmu
  91.      */
  92.     private void makeLighter(){
  93.         if(currentImage !=null){
  94.             currentImage.lighter();
  95.             frame.repaint();
  96.             showStatus("Applied : Lighter");
  97.         }else{
  98.             showStatus("Tidak ada gambar yang dimasukkan");
  99.         }
  100.     }
  101.  
  102.     /**
  103.      * fungsi threshold : memakai filter threshold
  104.      */
  105.     private void threshold(){
  106.         if(currentImage !=null){
  107.             currentImage.threshold();
  108.             frame.repaint();
  109.             showStatus("Applied : Threshold");
  110.         }else{
  111.             showStatus("Tidak ada gambar yang dimasukkan");
  112.         }
  113.     }
  114.  
  115.     /**
  116.      * fungsi About : menunjukan informasi tentang aplikasi ini
  117.      */
  118.     private  void showAbout(){
  119.         JOptionPane.showMessageDialog(frame,
  120.                 "Image Viewer\n" + VERSION,
  121.                 "About Image Viewer",
  122.                 JOptionPane.INFORMATION_MESSAGE);
  123.     }
  124. //    ----- Support Methods -----
  125.  
  126.     /**
  127.      * Menunjukkan nama file pada tabel yang sesuai
  128.      * @param filename nama file yang akan ditampilkan
  129.      */
  130.     private void showFilename(String filename){
  131.         if(filename == null){
  132.             filenameLabel.setText("Tidak ada file yang ditampilkan");
  133.         }
  134.         else {
  135.             filenameLabel.setText("File: " + filename);
  136.         }
  137.     }
  138.  
  139.     /**
  140.      * menampilkan pesan status pada frame status bar
  141.      * @param text pesan status yang akan ditampilkan
  142.      */
  143.     private void showStatus(String text){
  144.         statusLabel.setText(text);
  145.     }
  146.  
  147.     /**
  148.      * membuat Swing Frame dan  kontennya
  149.      */
  150.     private void makeFrame()
  151.     {
  152.         frame = new JFrame("Image Viewer");
  153.         makeMenuBar(frame);
  154.  
  155.         Container contentPane = frame.getContentPane();
  156.  
  157.         //tentukan pengelola tata letak dengan jarak yang bagus
  158.         contentPane.setLayout(new BorderLayout(10,10));
  159.  
  160.         filenameLabel = new JLabel();
  161.         contentPane.add(filenameLabel, BorderLayout.NORTH);
  162.  
  163.         imagePanel = new ImagePanel();
  164.         contentPane.add(imagePanel, BorderLayout.CENTER);
  165.  
  166.         statusLabel = new JLabel(VERSION);
  167.         contentPane.add(statusLabel, BorderLayout. SOUTH);
  168.  
  169.         //Sudah selesai di-Build -- Atur komponen dan penampilan
  170.         showFilename(null);
  171.         frame.pack();
  172.         Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
  173.         frame.setLocation(d.width/2 - frame.getWidth()/2,
  174.                 d.height/2 - frame.getHeight()/2);
  175.  
  176.         frame.setVisible(true);
  177.     }
  178.  
  179.     private void makeMenuBar(JFrame frame){
  180.         final int SHORTCUT_MASK =
  181.                 Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
  182.         JMenuBar menubar = new JMenuBar();
  183.         frame.setJMenuBar(menubar);
  184.  
  185.         JMenu menu;
  186.         JMenuItem item;
  187.  
  188. //        membuat menu File
  189.         menu = new JMenu("File");
  190.         menubar.add(menu);
  191.  
  192.         item = new JMenuItem("Open");
  193.         item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_MASK));
  194.         item.addActionListener(new ActionListener() {
  195.             @Override
  196.             public void actionPerformed(ActionEvent e) {
  197.                 openFile();
  198.             }
  199.         });
  200.         menu.add(item);
  201.  
  202.         item = new JMenuItem("Close");
  203.         item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, SHORTCUT_MASK));
  204.         item.addActionListener(new ActionListener() {
  205.             @Override
  206.             public void actionPerformed(ActionEvent e) {
  207.                 close();
  208.             }
  209.         });
  210.         menu.add(item);
  211.         menu.addSeparator();
  212.  
  213.         item = new JMenuItem("Quit");
  214.         item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));
  215.         item.addActionListener(new ActionListener() {
  216.             @Override
  217.             public void actionPerformed(ActionEvent e) {
  218.                 quit();
  219.             }
  220.         });
  221.         menu.add(item);
  222.  
  223. //        membuat menu filter
  224.         menu = new JMenu("Filter");
  225.         menubar.add(menu);
  226.  
  227.         item = new JMenuItem("Darker");
  228.         item.addActionListener(new ActionListener() {
  229.             @Override
  230.             public void actionPerformed(ActionEvent e) {
  231.                 makeDarker();
  232.             }
  233.         });
  234.         menu.add(item);
  235.  
  236.         item = new JMenuItem("Lighter");
  237.         item.addActionListener(new ActionListener() {
  238.             @Override
  239.             public void actionPerformed(ActionEvent e) {
  240.                 makeLighter();
  241.             }
  242.         });
  243.         menu.add(item);
  244.  
  245.         item = new JMenuItem("Threshold");
  246.         item.addActionListener(new ActionListener() {
  247.             @Override
  248.             public void actionPerformed(ActionEvent e) {
  249.                 threshold();
  250.             }
  251.         });
  252.         menu.add(item);
  253.  
  254. //        membuat menu Help
  255.         menu = new JMenu("Help");
  256.         menubar.add(menu);
  257.  
  258.         item = new JMenuItem("Tentang Image Viewer...");
  259.         item.addActionListener(new ActionListener() {
  260.             @Override
  261.             public void actionPerformed(ActionEvent e) {
  262.                 showAbout();
  263.             }
  264.         });
  265.         menu.add(item);
  266.     }
  267. }
Add Comment
Please, Sign In to add comment