FileSelect1.java

import java.awt.*;
import java.awt.event.*; // for ActionListener
import javax.swing.*;
import java.io.File;

/**
Demonstrate file selection dialog.
*/
public class FileSelect1 extends JFrame
{
    public static void main(String[] argv)
    {
        FileSelect1 fs = new FileSelect1();
        fs.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fs.show();
    }

    public FileSelect1()
    {
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension ss = kit.getScreenSize();
        setSize(3*ss.width/4,3*ss.height/4);
        setLocation(ss.width/8,ss.height/8);
        setTitle("CISC370-011 -- file selection demo");

        Container cp = getContentPane();
        JPanel p = new JPanel();
        cp.add(p);

        JLabel echo = new JLabel("No file yet.",JLabel.LEFT);
        p.add(echo);

        JMenuBar mbar = new JMenuBar();
        setJMenuBar(mbar);
        JMenu fileMenu = new JMenu("File");
        mbar.add(fileMenu);
        JMenuItem exitItem = new JMenuItem("Exit");
        fileMenu.add(exitItem);
        exitItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
                { System.exit(0); }
            });

        JMenu selectMenu = new JMenu("Select");
        mbar.add(selectMenu);
        JMenuItem imageItem = new JMenuItem("Select image...");
        selectMenu.add(imageItem);
        imageItem.addActionListener(new FileLookerUpper(this,echo));
    }
}


/**
Accept only image types known to work as JLabel image icons.
*/
class ImageFilter extends javax.swing.filechooser.FileFilter
{
    static String[] extensions = {
        ".gif",
        ".jpg",
        ".png",
        ".jpeg",
        };
    public boolean accept(File f)
    {
        if (f.isDirectory())
            return true;
        for (int i=0; i<extensions.length; i++)
            if (f.getName().toLowerCase().endsWith(extensions[i]))
                return true;
        return false;
    }

    public String getDescription()
    {
        return "Image file";
    }
}


/**
Allow the user to select an image file, display it in the JLabel.
*/
class FileLookerUpper implements ActionListener
{
    public FileLookerUpper(Component frame,JLabel label)
    {
        this.frame = frame;
        this.label = label;
    }

    public void actionPerformed(ActionEvent e)
    {
        String s;

        JFileChooser chooser = new JFileChooser();
        chooser.setCurrentDirectory(new File("."));
        chooser.setFileFilter(new ImageFilter());
        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        if (chooser.showOpenDialog(frame) ==
                JFileChooser.APPROVE_OPTION) {
            s = chooser.getSelectedFile().toString();
            label.setIcon(new ImageIcon(s));
            label.setText(null);
            }
        else {
            label.setIcon(null);
            label.setText("No image!");
            }
        label.repaint();
    }

    private Component frame;
    private JLabel label;
}