JAVA作业(5)

      通过近期学习,我学会了用程序来读取磁盘内的文件,并将它运行结果显示在自己做的GUI上面,在GUI里还做了一个下拉菜单,里面的写着不同文件的类型,暂时还没有完成通过选择不同类型文件使方框内筛选出各自的文件这个事件处理,但会继续跟进,此次代码如下

import java.awt.BorderLayout;
import java.awt.Color;
import java.io.File;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class Fileutils {

    public static class FileUtils{
        /**
         * 列出指定目录下的所有文件和子目录的名称
         * @throws IllegalAccessException 
         */
    public static void listDirectory(File dir) throws IllegalAccessException{
        
        
        JFrame frm= new JFrame();
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frm.setLayout(new BorderLayout());
        String[] likes ={".txt",".ppt",".jpg",".docx"};
        JComboBox l1=new JComboBox(likes);
        frm.add(l1, BorderLayout.NORTH);          

       
//        JTextArea j1=new JTextArea();

        
        frm.setBounds(500,300,300,400);
        
     
        frm.setVisible(true);
        
        
        
        
        
        //判断File 对象dir 是否存在,使用File类的exists()方法
        if(!dir.exists()){
            //如果不存在,抛出异常
            throw new IllegalAccessException("目录"+dir+"不存在");
        }
        //判断dir是否是目录,使用File类的isDirectory()方法
        if(!dir.isDirectory()){
            //如果dir不是目录,抛出异常
            throw new IllegalArgumentException(dir+"不是目录");
            
        }
        
        //获得指定目录dir 下的文件及子目录并输出(1.list();2.listFiles())
        //使用list()方法来实现
        String[] fileNames = dir.list();
        //第一种输出方式
//        for(String s : fileNames){
//            j1.append(dir+"\"+s);
//            j1.append("
");
//            j1.setEditable(false);
//            
//            //System.out.println(dir+"\"+s);
//        }    
         JList jl =new JList(fileNames);
         jl.setForeground(new Color(140,171,226));
         jl.setBackground(new Color(0,0,0));
         jl.setSelectionBackground(new Color(87,49,134));
         jl.setSelectionForeground(new Color(140,171,226));
         JScrollPane sp=new JScrollPane(jl);
         
//            sp.setViewportView(jl);
//             System.out.println();
        //使用ListFiles()方法实现只列出目录下的所有文件名称
//        sp.setBackground(Color.YELLOW);
        frm.add(sp,BorderLayout.CENTER);
        
        //第二种输出方式
//        File[] files=dir.listFiles();
//        for(File file:files){
//            //如果是文件,则输出
//        
//            if(file.isFile()){
//                j1.append(dir+"\"+file);
//                j1.append("
");
//                j1.setEditable(false);    
//            System.out.println(file);
//        }
//            }
//        
    }                
    }
    /**
     * @param args
     */


    public static void main(String[] args) {
        
        // TODO Auto-generated method stub
        try {            
            FileUtils.listDirectory(new File("F:\壁纸"));
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

运行效果图如下:

原文地址:https://www.cnblogs.com/jizehui/p/5395100.html