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;
}