public class MyAccessory extends JComponent implements PropertyChangeListener {
/**
*
*/
private static final long serialVersionUID = 2626268910546018039L;
private Image image;
public MyAccessory(JFileChooser chooser) {
// Listen for changes to the selected file
chooser.addPropertyChangeListener(this);
// Set a preferred size
setPreferredSize(new Dimension(150, 150));
this.setBounds(0, 10, 0, 0);
this.setBorder(BorderFactory.createEtchedBorder());
}
// This listener listens for changes to the selected file
public void propertyChange(PropertyChangeEvent evt) {
if (JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(evt
.getPropertyName())) {
// Get the new selected file
File newFile = (File) evt.getNewValue();
// Prepare the preview data based on the new selected file
try {
image = Toolkit.getDefaultToolkit()
.getImage(newFile.toString());
MediaTracker mediaTracker = new MediaTracker(this);
mediaTracker.addImage(image, 0);
mediaTracker.waitForID(0);
} catch (Exception ie) {
}
;
// Repaint this component
repaint();
}
}
public void paint(Graphics g) {
try {
g.drawImage(image, 10, 0, 150, 150, this.getBackground(), null);
} catch (NullPointerException np) {
}
}
}