我想通过一个文件选择对话框把一个文件或者一个目录中的所有JPG的文件读入JLIST中,要用到哪些类?

解决方案 »

  1.   

    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.DefaultListModel;import java.io.File;
    import javax.swing.filechooser.FileFilter;public class ReadJPG extends JFrame {

     DefaultListModel listModel = new DefaultListModel();
     JList jpgList = new JList(listModel);
     
     public ReadJPG(){
       JButton bt=new JButton("打开"); 
         this.add(bt);
         this.add(jpgList);
         bt.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e) {
         JFileChooser file=new JFileChooser();
         file.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);  
         file.addChoosableFileFilter(new JPGFileFilter("jpg")); 
         int val = file.showOpenDialog(ReadJPG.this);
         if(val == JFileChooser.APPROVE_OPTION)
         {
          listModel.clear();  
          File f = file.getSelectedFile();
          if(f.isFile())
            listModel.addElement(f.getName());   
          else{//文件夹
         File[] files = f.listFiles();
         if(files != null && files.length != 1){
         for(int i=0; i<files.length; i++){
         if(files[i].isFile() && files[i].getName().toLowerCase().endsWith(".jpg")) 
            listModel.addElement(files[i].getName());
             }
         }
          }
         }
        }
       });
       
       this.setLayout(new FlowLayout());
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       this.setBounds(100,100,300,300);
       this.setVisible(true);
     }
     
     private class JPGFileFilter extends FileFilter {  String ext; 
    JPGFileFilter(String ext) { 
       this.ext = ext; 
    }  public boolean accept(File file) { 
       if (file.isDirectory()) 
       { 
        return true; 
       }     String fileName = file.getName(); 
       int index = fileName.lastIndexOf('.');     if (index > 0 && index < fileName.length() - 1) 
       { 
        String extension = fileName.substring(index + 1).toLowerCase(); 
        if (extension.equals(ext)) 
         return true; 
       } 
       return false; 
    }

    public String getDescription() {
           return "图像文件(*.jpg)";
       }
      }
     
     public static void main(String[] args) {
      new ReadJPG();
     }
    }