I am sorry but my major does not cover programming in depth (ICT) and we are expected to know advanced java programming. I am looking for help. I have purchased a book from Oracle but I will not be up to speed this semester. Please Help me!!! 1. Write an app called viewer that will have a Label at the top saying \"My Viewer\" (or something like that) 2. Will have JButtons at the bottom that will do Next, Previous, and Quit 3. Have the whole middle be a JLabel in which you will display Images stored in a directory. 4. The directory can be named Resource. 5. When you run the program (java viewer) it will read all the names in the Resource Directory. Then, when you click Next or Previous it will display an Image. 6. Note: you will need to find a java method that exists for reading a whole directory of filenames. You can store all those names in a String Array when run the program. 7. You will use a counter or index that is an int an when you click Next it will increment the counter until it reach some maximum value and then you will set it to 0. Previous will decrement the counter until it goes negative and then it will set the counter to the Maximum index ( which is how many filenames you have in the Image names array) 8. Submit the program viewer.java I should be able to use it with my own Resource directory Solution Compilation process javac Viewer.java Run java Viewer Click on next or previous a file chooser will be opened and you can select your file The Code is in four file. // File Dg.java import java.io.File; public class Dg { public File nextFile(File file) { File f[] = new File[5000]; f = file.getParentFile().listFiles(new ImageFileFilter()); int max = f.length; max = max - 1; // System.out.println(file); for (int i = 0; i < f.length; i++) { if (f[i].equals(file)) { if (i + 1 > max) { return f[0]; } else { return f[i + 1]; } } else { // System.out.println(0); // return file; } } return file; } public File priFile(File file) { File f[] = new File[5000]; f = file.getParentFile().listFiles(new ImageFileFilter()); int min = 0; // System.out.println(file); for (int i = 0; i < f.length; i++) { if (f[i].equals(file)) { min = i - 1; if (min < 0) { return f[f.length-1]; } else { return f[min]; } } else { // System.out.println(0); // return file; } } return file; } } /// Image.java import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JPanel; import java.awt.Color; import javax.swing.JLabel; import java.awt.Font; public class Image extends JPanel { /** * */ private static final long serialVersionUID = 1L; public BufferedImage img = null; /** * Create the panel. */ @SuppressWarnings(\"static-access\") public Image() { setBackground(new Color(255, 255, 255)); setLayout(null); try { Viewer ocr = new Viewer(); img = ImageIO.read(ocr.file); JLabel lblNewLabel = new JLabel(Viewer.f.