kuchuz

PBO-C 7 : ImageViewer

Jan 11th, 2021 (edited)
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.16 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.awt.image.*;
  4. import javax.swing.*;
  5. import java.io.File;
  6.  
  7. public class ImageViewer
  8. {
  9.     private static final String VERSION = "Version 1.0";
  10.     private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));
  11.     private JFrame frame;
  12.     private ImagePanel imagePanel;
  13.     private JLabel filenameLabel;
  14.     private JLabel statusLabel;
  15.     private OFImage currentImage;
  16.      
  17.     public ImageViewer()
  18.     {
  19.         currentImage = null;
  20.         makeFrame();
  21.     }
  22.  
  23.     private void openFile()
  24.     {
  25.         int returnVal = fileChooser.showOpenDialog(frame);
  26.         if (returnVal != JFileChooser.APPROVE_OPTION)
  27.         {
  28.             return;
  29.         }
  30.         File selectedFile = fileChooser.getSelectedFile();
  31.         currentImage = ImageFileManager.loadImage(selectedFile);
  32.         if (currentImage == null)
  33.         {
  34.             JOptionPane.showMessageDialog(frame, "The file was not in a recognized image file format.",
  35.                     "Image Load Error", JOptionPane.ERROR_MESSAGE);
  36.             return;
  37.         }
  38.         imagePanel.setImage(currentImage);
  39.         showFilename(selectedFile.getPath());
  40.         showStatus("File loaded.");
  41.         frame.pack();
  42.     }
  43.  
  44.     private void close()
  45.     {
  46.         currentImage = null;
  47.         imagePanel.clearImage();
  48.         showFilename(null);
  49.     }
  50.  
  51.     private void quit()
  52.     {
  53.         System.exit(0);
  54.     }
  55.  
  56.     private void makeDarker()
  57.     {
  58.         if (currentImage != null)
  59.         {
  60.             currentImage.darker();
  61.             frame.repaint();
  62.             showStatus("Applied: darker");
  63.         }
  64.         else
  65.         {
  66.             showStatus("No image loaded.");
  67.         }
  68.     }
  69.  
  70.     private void makeLighter()
  71.     {
  72.         if (currentImage != null)
  73.         {
  74.             currentImage.lighter();
  75.             frame.repaint();
  76.             showStatus("Applied: lighter");
  77.         }
  78.         else
  79.         {
  80.             showStatus("No image loaded.");
  81.         }
  82.     }
  83.  
  84.     private void threshold()
  85.     {
  86.         if (currentImage != null)
  87.         {
  88.             currentImage.threshold();
  89.             frame.repaint();
  90.             showStatus("Applied: threshold");
  91.         }
  92.         else
  93.         {
  94.             showStatus("No image loaded.");
  95.         }
  96.     }
  97.  
  98.     private void showAbout()
  99.     {
  100.         JOptionPane.showMessageDialog(frame, "ImageViewer\n" + VERSION, "About ImageViewer",JOptionPane.INFORMATION_MESSAGE);
  101.     }
  102.  
  103.     private void showFilename(String filename)
  104.     {
  105.         if (filename == null)
  106.         {
  107.             filenameLabel.setText("No file displayed.");
  108.         }
  109.         else
  110.         {
  111.             filenameLabel.setText("File: " + filename);
  112.         }
  113.     }
  114.  
  115.     private void showStatus(String text)
  116.     {
  117.         statusLabel.setText(text);
  118.     }
  119.  
  120.     private void makeFrame()
  121.     {
  122.         frame = new JFrame("ImageViewer");
  123.         makeMenuBar(frame);
  124.         Container contentPane = frame.getContentPane();
  125.         contentPane.setLayout(new BorderLayout(6, 6));
  126.         filenameLabel = new JLabel();
  127.         contentPane.add(filenameLabel, BorderLayout.NORTH);
  128.         imagePanel = new ImagePanel();
  129.         contentPane.add(imagePanel, BorderLayout.CENTER);
  130.         statusLabel = new JLabel(VERSION);
  131.         contentPane.add(statusLabel, BorderLayout.SOUTH);
  132.         showFilename(null);
  133.         frame.pack();
  134.         Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
  135.         frame.setLocation(d.width / 2 - frame.getWidth() / 2, d.height / 2 - frame.getHeight() / 2);
  136.         frame.setVisible(true);
  137.     }
  138.  
  139.     private void makeMenuBar(JFrame frame)
  140.     {
  141.         final int SHORTCUT_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
  142.         JMenuBar menubar = new JMenuBar();
  143.         frame.setJMenuBar(menubar);
  144.         JMenu menu;
  145.         JMenuItem item;
  146.         menu = new JMenu("File");
  147.         menubar.add(menu);
  148.         item = new JMenuItem("Open");
  149.         item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_MASK));
  150.         item.addActionListener(new ActionListener()
  151.         {
  152.             public void actionPerformed(ActionEvent e)
  153.             {
  154.                 openFile();
  155.             }
  156.         });
  157.         menu.add(item);
  158.         item = new JMenuItem("Close");
  159.         item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, SHORTCUT_MASK));
  160.         item.addActionListener(new ActionListener()
  161.         {
  162.             public void actionPerformed(ActionEvent e)
  163.             {
  164.                 close();
  165.             }
  166.         });
  167.         menu.add(item);
  168.         menu.addSeparator();
  169.         item = new JMenuItem("Quit");
  170.         item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));
  171.         item.addActionListener(new ActionListener()
  172.         {
  173.             public void actionPerformed(ActionEvent e)
  174.             {
  175.                 quit();
  176.             }
  177.         });
  178.         menu.add(item);
  179.         menu = new JMenu("Filter");
  180.         menubar.add(menu);
  181.         item = new JMenuItem("Darker");
  182.         item.addActionListener(new ActionListener()
  183.         {
  184.             public void actionPerformed(ActionEvent e)
  185.             {
  186.                 makeDarker();
  187.             }
  188.         });
  189.         menu.add(item);
  190.         item = new JMenuItem("Lighter");
  191.         item.addActionListener(new ActionListener()
  192.         {
  193.             public void actionPerformed(ActionEvent e)
  194.             {
  195.                 makeLighter();
  196.             }
  197.         });
  198.         menu.add(item);
  199.         item = new JMenuItem("Threshold");
  200.         item.addActionListener(new ActionListener()
  201.         {
  202.             public void actionPerformed(ActionEvent e)
  203.             {
  204.                 threshold();
  205.             }
  206.         });
  207.         menu.add(item);
  208.         menu = new JMenu("Help");
  209.         menubar.add(menu);
  210.         item = new JMenuItem("About ImageViewer...");
  211.         item.addActionListener(new ActionListener()
  212.         {
  213.             public void actionPerformed(ActionEvent e)
  214.             {
  215.                 showAbout();
  216.             }
  217.         });
  218.         menu.add(item);
  219.     }
  220. }
Add Comment
Please, Sign In to add comment