📄 zfilechooser.java
字号:
/*
/icons * put your module comment here
* formatted with JxBeauty (c) johann.langhofer@nextra.at
* from sun's tutor
*/
package ezcell;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
/**
* DOCUMENT ME!
*
* @version $Revision$
* @author $author$
*/
public class ZFileChooser {
private static ZFileChooser sharedInstance;
static private String newline = "\n";
public final static String jpeg = "jpeg";
public final static String jpg = "jpg";
public final static String gif = "gif";
public final static String tiff = "tiff";
public final static String tif = "tif";
private JFileChooser fc;
private File file;
private int option;
private Component owner;
/**
* Creates a new ZFileChooser object.
*
* @param owner DOCUMENT ME!
*/
public ZFileChooser(Component owner) {
fc = new JFileChooser();
fc.addChoosableFileFilter(new ImageFilter());
fc.setFileView(new ImageFileView());
fc.setAccessory(new ImagePreview(fc));
this.owner = owner;
ZToolkit.moveCenter(owner, fc);
}
/**
* DOCUMENT ME!
*
* @param f DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public static String getExtension(File f) {
String ext = null;
String s = f.getName();
int i = s.lastIndexOf('.');
if ((i > 0) && (i < (s.length() - 1))) {
ext = s.substring(i + 1).toLowerCase();
}
return ext;
}
static ZFileChooser getSharedInstance(Component owner) {
if (sharedInstance == null) {
sharedInstance = new ZFileChooser(owner);
}
return sharedInstance;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public int show() {
option = JOptionPane.CANCEL_OPTION;
int returnVal = fc.showDialog(owner, "OK");
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = fc.getSelectedFile();
option = JOptionPane.OK_OPTION;
}
return option;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public File getSelectedFile() {
return file;
}
}
/**
* DOCUMENT ME!
*
* @version $Revision$
* @author $author$
*/
class ImagePreview extends JComponent implements PropertyChangeListener {
ImageIcon thumbnail = null;
File file = null;
/**
* Creates a new ImagePreview object.
*
* @param fc DOCUMENT ME!
*/
public ImagePreview(JFileChooser fc) {
setPreferredSize(new Dimension(100, 50));
fc.addPropertyChangeListener(this);
}
/**
* DOCUMENT ME!
*/
public void loadImage() {
if (file == null) {
return;
}
ImageIcon tmpIcon = new ImageIcon(file.getPath());
if (tmpIcon.getIconWidth() > 90) {
thumbnail = new ImageIcon(tmpIcon.getImage()
.getScaledInstance(90, -1,
Image.SCALE_DEFAULT));
} else {
thumbnail = tmpIcon;
}
}
/**
* DOCUMENT ME!
*
* @param e DOCUMENT ME!
*/
public void propertyChange(PropertyChangeEvent e) {
String prop = e.getPropertyName();
if (prop.equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)) {
file = (File) e.getNewValue();
if (isShowing()) {
loadImage();
repaint();
}
}
}
/**
* DOCUMENT ME!
*
* @param g DOCUMENT ME!
*/
public void paintComponent(Graphics g) {
if (thumbnail == null) {
loadImage();
}
if (thumbnail != null) {
int x = (getWidth() / 2) - (thumbnail.getIconWidth() / 2);
int y = (getHeight() / 2) - (thumbnail.getIconHeight() / 2);
if (y < 0) {
y = 0;
}
if (x < 5) {
x = 5;
}
thumbnail.paintIcon(this, g, x, y);
}
}
}
/**
* DOCUMENT ME!
*
* @version $Revision$
* @author $author$
*/
class ImageFilter extends javax.swing.filechooser.FileFilter {
/**
* DOCUMENT ME!
*
* @param f DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
String extension = ZFileChooser.getExtension(f);
if (extension != null) {
if (extension.equals(ZFileChooser.tiff) ||
extension.equals(ZFileChooser.tif) ||
extension.equals(ZFileChooser.gif) ||
extension.equals(ZFileChooser.jpeg) ||
extension.equals(ZFileChooser.jpg)) {
return true;
} else {
return false;
}
}
return false;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getDescription() {
return "Just Images";
}
}
/**
* DOCUMENT ME!
*
* @version $Revision$
* @author $author$
*/
class ImageFileView extends FileView {
ImageIcon jpgIcon = new ImageIcon(getClass().getResource("/icons/jpgIcon.gif"));
ImageIcon gifIcon = new ImageIcon(getClass().getResource("/icons/gifIcon.gif"));
ImageIcon tiffIcon = new ImageIcon(getClass().getResource("/icons/tiffIcon.gif"));
/**
* DOCUMENT ME!
*
* @param f DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getName(File f) {
return null; // let the L&F FileView figure this out
}
/**
* DOCUMENT ME!
*
* @param f DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getDescription(File f) {
return null; // let the L&F FileView figure this out
}
/**
* DOCUMENT ME!
*
* @param f DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public Boolean isTraversable(File f) {
return null; // let the L&F FileView figure this out
}
/**
* DOCUMENT ME!
*
* @param f DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getTypeDescription(File f) {
String extension = ZFileChooser.getExtension(f);
String type = null;
if (extension != null) {
if (extension.equals(ZFileChooser.jpeg) ||
extension.equals(ZFileChooser.jpg)) {
type = "JPEG Image";
} else if (extension.equals(ZFileChooser.gif)) {
type = "GIF Image";
} else if (extension.equals(ZFileChooser.tiff) ||
extension.equals(ZFileChooser.tif)) {
type = "TIFF Image";
}
}
return type;
}
/**
* DOCUMENT ME!
*
* @param f DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public Icon getIcon(File f) {
String extension = ZFileChooser.getExtension(f);
Icon icon = null;
if (extension != null) {
if (extension.equals(ZFileChooser.jpeg) ||
extension.equals(ZFileChooser.jpg)) {
icon = jpgIcon;
} else if (extension.equals(ZFileChooser.gif)) {
icon = gifIcon;
} else if (extension.equals(ZFileChooser.tiff) ||
extension.equals(ZFileChooser.tif)) {
icon = tiffIcon;
}
}
return icon;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -