Copyright Derek O'Reilly, Dundalk Institute of Technology (DkIT), Dundalk, Co. Louth, Ireland.
FileChooserDemo Example (Run Application)
package FileChooserDemo;
import java.awt.*;
import javax.swing.*;
public class FileChooserDemo extends JApplet
{
public static void main(String[] args)
{
// application title and dimensions
final String title = "FileChooser Example";
final Dimension applicationFrameSize = new Dimension(300, 200);
// make an application frame to hold the applet
final JFrame applicationFrame = new JFrame(title);
applicationFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
applicationFrame.setSize(applicationFrameSize);
// place the applet inside the application's frame
final JApplet applet = new FileChooserDemo();
applicationFrame.setLayout(new BorderLayout());
applicationFrame.getContentPane().add("Center", applet);
applet.init();
applicationFrame.setVisible(true);
}
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel
{
public View()
{
super();
// set up a message so that the selected file name can be
// displayed on the applet's panel
final JLabel message = new JLabel();
this.add(message);
// create a file chooser
final JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
{
message.setText("Filename: " + fileChooser.getCurrentDirectory()
+ "\\" + fileChooser.getSelectedFile().getName());
}
}
}
}
FileChooser_Filter_Demo Example (Run Application)
package filechooser_filter_demo;
import java.awt.*;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class FileChooser_Filter_Demo extends JApplet
{
public static void main(String[] args)
{
// application title and dimensions
final String title = "FileChooser_Filter_Demo Example";
final Dimension applicationFrameSize = new Dimension(300, 200);
// make an application frame to hold the applet
final JFrame applicationFrame = new JFrame(title);
applicationFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
applicationFrame.setSize(applicationFrameSize);
// place the applet inside the application's frame
final JApplet applet = new FileChooser_Filter_Demo();
applicationFrame.setLayout(new BorderLayout());
applicationFrame.getContentPane().add("Center", applet);
applet.init();
applicationFrame.setVisible(true);
}
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel
{
public View()
{
super();
// set up a message so that the selected file name can be
// displayed on the applet's panel
final JLabel message = new JLabel();
this.add(message);
// create a file chooser
final JFileChooser fileChooser = new JFileChooser();
// turn off the option to see all files
fileChooser.setAcceptAllFileFilterUsed(false);
// filter the fileChooser
fileChooser.addChoosableFileFilter(new JpegFileFilter());
fileChooser.addChoosableFileFilter(new GifFileFilter());
if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
{
message.setText("Filename: " + fileChooser.getCurrentDirectory() + "\\" +
fileChooser.getSelectedFile().getName());
}
}
private class JpegFileFilter extends FileFilter
{
@Override
public boolean accept(File file)
{
if (file.isDirectory())
{
return true;
}
final String fileName = file.getName().toLowerCase();
return (fileName.endsWith(".jpg") || fileName.endsWith(".jpeg") || fileName.endsWith(".jpe"));
}
@Override
public String getDescription()
{
return ("JPEG (*.JPG, *.JPEG and *.JPE)");
}
}
private class GifFileFilter extends FileFilter
{
@Override
public boolean accept(File file)
{
if (file.isDirectory())
{
return true;
}
final String name = file.getName().toLowerCase();
return (name.endsWith(".gif"));
}
@Override
public String getDescription()
{
return ("CompuServe GIF (*.GIF)");
}
}
}
}
FileChooser_ImageFiles_Demo Example (Run Application)
package filechooser_imagefiles_demo;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class FileChooser_ImageFiles_Demo extends JApplet
{
public static void main(String[] args)
{
// application title and dimensions
final String title = "Application Title";
final Dimension applicationFrameSize = new Dimension(300, 200);
// make an application frame to hold the applet
final JFrame applicationFrame = new JFrame(title);
applicationFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
applicationFrame.setSize(applicationFrameSize);
// place the applet inside the application's frame
final JApplet applet = new FileChooser_ImageFiles_Demo();
applicationFrame.setLayout(new BorderLayout());
applicationFrame.getContentPane().add("Center", applet);
applet.init();
applicationFrame.setVisible(true);
}
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel implements ActionListener
{
private final JButton openFile = new JButton("Open");
private final JButton saveFile = new JButton("Save");
private final JFileChooser fileChooser = new JFileChooser();
private final Canvas canvas = new Canvas(); // user defined Canvas class
public View()
{
super();
// initialise the fileChooser
this.fileChooser.setAcceptAllFileFilterUsed(false);
this.fileChooser.addChoosableFileFilter(new JpegFileFilter());
this.fileChooser.addChoosableFileFilter(new GifFileFilter());
// control panel
JPanel controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
controlPanel.add(this.openFile);
controlPanel.add(this.saveFile);
// initialise the applet's panel
setLayout(new BorderLayout());
add("South", controlPanel);
add("Center", this.canvas);
// add actionListeners
this.openFile.addActionListener(this);
this.saveFile.addActionListener(this);
// Do not allow save until a file has been opened
this.saveFile.setEnabled(false);
}
@Override
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if (source == this.openFile)
{
openFile();
}
else
{
saveFile();
}
this.canvas.repaint();
}
private void openFile()
{
// Open and display an image file
if (this.fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
{
File imageFile = new File(this.fileChooser.getCurrentDirectory() + "\\" +
this.fileChooser.getSelectedFile().getName());
try
{
this.canvas.setImage(imageFile);
// show and hide appropriate buttons
this.openFile.setEnabled(false);
this.saveFile.setEnabled(true);
}
catch (Exception e)
{
}
}
}
private void saveFile()
{
// Save the same image file
if (this.fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
{
File imageFile = new File(this.fileChooser.getCurrentDirectory() + "\\" +
this.fileChooser.getSelectedFile().getName());
try
{
String fileType = this.fileChooser.getSelectedFile().getName();
if (fileType.contains(".gif"))
{
fileType = "gif";
}
else
{
fileType = "jpg";
}
ImageIO.write(canvas.getImage(), fileType, imageFile);
// show and hide appropriate buttons
this.openFile.setEnabled(true);
this.saveFile.setEnabled(false);
this.canvas.setImage(null);
}
catch (Exception e)
{
}
}
}
private class JpegFileFilter extends FileFilter
{
@Override
public boolean accept(File file)
{
if (file.isDirectory())
{
return true;
}
String fileName = file.getName().toLowerCase();
return (fileName.endsWith(".jpg") || fileName.endsWith(".jpeg") || fileName.endsWith(".jpe"));
}
@Override
public String getDescription()
{
return ("JPEG (*.JPG, *.JPEG and *.JPE)");
}
}
private class GifFileFilter extends FileFilter
{
@Override
public boolean accept(File file)
{
if (file.isDirectory())
{
return true;
}
String name = file.getName().toLowerCase();
return (name.endsWith(".gif"));
}
@Override
public String getDescription()
{
return ("CompuServe GIF (*.GIF)");
}
}
}
public class Canvas extends JPanel
{
private BufferedImage image = null;
public Canvas()
{
super();
}
public void setImage(File imageFile)
{
if (imageFile != null)
{
try
{
image = ImageIO.read(imageFile);
}
catch (Exception e)
{
}
}
else // imageFile == null
{
// reset the image to empty
image = null;
}
}
public BufferedImage getImage()
{
return image;
}
@Override
public void paintComponent(Graphics g)
{
//super.paintComponent(g);
if (this.image != null)
{
final Graphics2D g2d = this.image.createGraphics();
// perform a simple manipulatation of the inputted image
g2d.setColor(Color.red);
g2d.fillOval(this.image.getWidth() / 4, this.image.getHeight() / 4,
this.image.getWidth() / 2, this.image.getHeight() / 2);
// paint the modified image
g.drawImage(this.image, 0, 0, this.getWidth(), this.getHeight(), this);
}
else // no image displayed yet
{
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.black);
g.drawString("Select an image to display", 10, this.getHeight() / 2);
}
}
}
}
Copyright Derek O' Reilly, Dundalk Institute of Technology (DkIT), Dundalk, Co. Louth, Ireland.