文件对话框

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.beans.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileView;

public class FirstSample{
    public static void main(String[] args){
        ImageViewerFrame frame=new ImageViewerFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

class ImageViewerFrame extends JFrame{
    public ImageViewerFrame(){
        setTitle("FileChooserTest");
        setSize(WIDTH,HEIGHT);
       
        JMenuBar menuBar=new JMenuBar();
        setJMenuBar(menuBar);
       
        JMenu menu=new JMenu("File");
        menuBar.add(menu);
       
        JMenuItem openItem=new JMenuItem("Open");
        menu.add(openItem);
        openItem.addActionListener(new FileOpenListener());
       
        JMenuItem exitItem=new JMenuItem("Exit");
        menu.add(exitItem);
        exitItem.addActionListener(new
                ActionListener(){
                    public void actionPerformed(ActionEvent event){
                        System.exit(0);
                    }
            });
       
        label=new JLabel();
        add(label);;
       
        chooser=new JFileChooser();
       
        final ExtensionFileFilter filter=new ExtensionFileFilter();
        filter.addExtension("jpg");
        filter.addExtension("jpeg");
        filter.addExtension("gif");
        filter.setDescription("Image files");
        chooser.setFileFilter(filter);
        chooser.setAccessory(new ImagePreviewer(chooser));
        chooser.setFileView(new FileIconView(filter,new ImageIcon("palette.gif")));
    }
   
    private class FileOpenListener implements ActionListener{
        public void actionPerformed(ActionEvent event){
            chooser.setCurrentDirectory(new File("."));
            int result=chooser.showOpenDialog(ImageViewerFrame.this);
           
            if(result==JFileChooser.APPROVE_OPTION){
                String name=chooser.getSelectedFile().getPath();
                label.setIcon(new ImageIcon(name));
            }
        }
    }
   
    public static final int WIDTH=300;
    public static final int HEIGHT=400;
   
    private JLabel label;
    private JFileChooser chooser;
}

class ExtensionFileFilter extends FileFilter{
    public void addExtension(String extension){
        if(!extension.startsWith("."))
            extension="."+extension;
        extensions.add(extension.toLowerCase());
    }
   
    public void setDescription(String aDescription){
        description=aDescription;
    }
   
    public String getDescription(){
        return description;
    }
   
    public boolean accept(File f){
        if(f.isDirectory()) return true;
        String name=f.getName().toLowerCase();
       
        for(String extension:extensions)
            if(name.endsWith(extension))
                return true;
        return false;
    }
   
    private String description="";
    private ArrayList<String> extensions=new ArrayList<String>();
}

class FileIconView extends FileView{
    public FileIconView(FileFilter aFilter,Icon anIcon){
        filter=aFilter;
        icon=anIcon;
    }
   
    public Icon getIcon(File f){
        if(!f.isDirectory()&&filter.accept(f))
            return icon;
        else
            return null;
    }
   
    private FileFilter filter;
    private Icon icon;
}

class ImagePreviewer extends JLabel{
    public ImagePreviewer(JFileChooser chooser){
        setPreferredSize(new Dimension(100,100));
        setBorder(BorderFactory.createEtchedBorder());
       
        chooser.addPropertyChangeListener(new
                PropertyChangeListener(){
                    public void propertyChange(PropertyChangeEvent event){
                        if(event.getPropertyName()==JFileChooser.SELECTED_FILE_CHANGED_PROPERTY){
                            File f=(File) event.getNewValue();
                            if(f==null) {setIcon(null);return;}
                           
                            ImageIcon icon=new ImageIcon(f.getPath());
                           
                            if(icon.getIconWidth()>getWidth())
                                icon=new ImageIcon(icon.getImage().getScaledInstance(getWidth(), -1, Image.SCALE_DEFAULT));
                           
                            setIcon(icon);
                        }
                    }
            });
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值