import javax.swing.*; import java.awt.*; /** * Class that holds a digital picture and displays it. * * Copyright Georgia Institute of Technology 2004 * @author Barb Ericson ericson@cc.gatech.edu */ public class PictureFrame { ////////////////// fields //////////////////////////// /** * Main window used as the frame */ JFrame frame = new JFrame(); /** * ImageIcon used to display the picture in the label */ ImageIcon imageIcon = new ImageIcon(); /** * Label used to display the picture */ private JLabel label = new JLabel(imageIcon); /** * Digital Picture to display */ private DigitalPicture picture; ///////////////// constructors //////////////////////// /** * A constructor that takes no arguments. This is needed * for subclasses of this class */ public PictureFrame() { // set up the frame initFrame(); } /** * A constructor that takes a picture to display * @param picture the digital picture to display in the picture frame */ public PictureFrame(DigitalPicture picture) { // set the current object's picture to the passed in picture this.picture = picture; // set up the frame initFrame(); } ///////////////////////// methods //////////////////////////////////// /** * Method to set the picture to show in this picture frame * @param picture the new picture to use */ public void setPicture(Picture picture) { this.picture = picture; imageIcon.setImage(picture.getImage()); frame.pack(); frame.repaint(); } /** * A method to update the picture frame image with the image in the * picture */ public void updateImage() { // only do this if there is a picture if (picture != null) { // set the image for the image icon from the picture imageIcon.setImage(picture.getImage()); // set the title of the frame to the title of the picture frame.setTitle(picture.getTitle()); } } /** * A method to update the picture frame image with the image in the picture * and show it */ public void updateImageAndShowIt() { // first update the image updateImage(); // now make sure it is shown frame.setVisible(true); } /** * A method to make sure the frame is displayed */ public void displayImage() { frame.setVisible(true); } /** * Method to set the title for the picture frame * @param title the title to use */ public void setTitle(String title) { frame.setTitle(title); } /** * Method to force the picture frame to repaint (redraw) */ public void repaint() { // make it visible frame.setVisible(true); // update the image from the picture updateImage(); // tell the JFrame to handle the repaint frame.repaint(); } /** * Close the window */ public void close() { frame.dispose(); } /** * A method to initialize the picture frame */ private void initFrame() { // set the image for the picture frame updateImage(); // add the label to the frame frame.getContentPane().add(label); // pack the frame (set the size to as big as it needs to be) frame.pack(); // make the frame visible frame.setVisible(true); } }