• Java(五)


    ♥作业1

    显示指定路径所有文件及实现文件筛选。智能监控,程序能自动在下拉菜单生成任意路径下文件所有尾缀。

      代码内注释内容为步骤与整体思路 

      1 import java.awt.BorderLayout;
      2 import java.awt.Color;
      3 import java.awt.Font;
      4 import java.awt.event.ActionEvent;
      5 import java.awt.event.ActionListener;
      6 import java.io.File;
      7 import java.util.HashMap;
      8 import javax.swing.JComboBox;
      9 import javax.swing.JFrame;
     10 import javax.swing.JLabel;
     11 import javax.swing.JPanel;
     12 import javax.swing.JScrollPane;
     13 import javax.swing.JTextArea;
     14 import javax.swing.border.EmptyBorder; 
     15 
     16 /**
     17  * 文件排序系统。
     18  * 
     19  * @author 
     20  *
     21  */
     22 public class FileUtils {
     23 
     24     /**
     25      * 用于存储分类后的文件。 
     26      * key:后缀名, value:StringBuilder存储对应的文件。
     27      */
     28     private HashMap<String, StringBuilder> resultMap = new HashMap<String, StringBuilder>();
     29     
     30     /**
     31      * 监听文件目录。
     32      * 
     33      * @param dir 目录。
     34      * @throws IllegalAccessException 访问非法异常。
     35      */
     36     public void listenDirectory(File dir) throws IllegalAccessException {
     37         if (!dir.exists()) {
     38             throw new IllegalAccessException("目录" + dir + "不存在。");
     39         }
     40 
     41         if (!dir.isDirectory()) {
     42             throw new IllegalArgumentException(dir + "不是目录");
     43         }
     44         
     45         String[] fileNames = dir.list();
     46         resultMap.put("all", new StringBuilder());    //默认所有文件。
     47         resultMap.put("folder", new StringBuilder()); //文件夹形式。
     48         
     49         //后缀。
     50         String suffix;
     51         for (String fileName : fileNames) {
     52             resultMap.get("all").append(fileName + "
    ");
     53             if (fileName.indexOf(".") > 0) {
     54                 suffix = fileName.substring(fileName.indexOf("."), fileName.length());
     55                 
     56                 if (!resultMap.containsKey(suffix)) {
     57                     StringBuilder stringBuilder = new StringBuilder();
     58                     stringBuilder.append(fileName + "
    ");
     59                     resultMap.put(suffix, stringBuilder);
     60                 } else {
     61                     resultMap.get(suffix).append(fileName + "
    ");
     62                 }
     63             } else {
     64                 resultMap.get("folder").append(fileName + "
    ");
     65             }
     66         }
     67         
     68         buildGUI();
     69     }
     70     
     71     /**
     72      * 搭建GUI。
     73      */
     74     public void buildGUI() {
     75         final JTextArea fileList = new JTextArea();
     76         fileList.setText(resultMap.get("all").toString());
     77         String[] likes = new String[resultMap.keySet().size()];
     78         resultMap.keySet().toArray(likes);
     79         final JComboBox combox = new JComboBox(likes);
     80         
     81         JFrame frm = new JFrame();
     82         frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     83 
     84         JPanel contentPane = new JPanel();
     85         contentPane.setBorder(new EmptyBorder(6, 10, 10, 10));
     86         contentPane.setLayout(new BorderLayout(5, 5));
     87         contentPane.add(combox, BorderLayout.NORTH);
     88         
     89         JPanel pane = new JPanel();
     90         pane.setLayout(new BorderLayout(8, 8));
     91 
     92         JLabel label = new JLabel(" File lists :");
     93         label.setFont(new Font("Serif", Font.PLAIN, 16));
     94 
     95         fileList.setForeground(new Color(140, 171, 226));
     96         fileList.setBackground(Color.white);
     97         fileList.setSelectedTextColor(new Color(87, 49, 134));
     98         fileList.setForeground(Color.black);
     99 
    100         JScrollPane scrollPane = new JScrollPane(fileList);
    101         scrollPane.setColumnHeaderView(label);
    102         
    103         pane.add(scrollPane, BorderLayout.CENTER);
    104         contentPane.add(pane, BorderLayout.CENTER);
    105         frm.add(contentPane);
    106         frm.setBounds(500, 300, 300, 400);
    107         frm.setVisible(true);
    108         
    109         //JComboBox事件监听。
    110         combox.addActionListener(new ActionListener() {
    111             @Override
    112             public void actionPerformed(ActionEvent e) {
    113                 try {
    114                     // 获取组合框的item
    115                     String item = (String) combox.getItemAt(combox.getSelectedIndex());
    116                     fileList.setText(resultMap.get(item).toString());
    117                 } catch (Exception e1) {
    118                     e1.printStackTrace();
    119                 }
    120             }
    121         });
    122     }
    123 
    124     public static void main(String[] args) {
    125         String path = "D:\";
    126         try {
    127             new FileUtils().listenDirectory(new File(path));
    128         } catch (IllegalAccessException e) {
    129             e.printStackTrace();
    130         }
    131     }
    132 }

     下面是结果:

    (1)D盘 文件类型较多

          

    (2)又如F盘路径下只有文件夹,则下拉菜单只显示folder

       

     

     ♥作业2:正在努力改进中…(˘•ω•˘)ง老师请谅解

  • 相关阅读:
    拒绝喝酒理由1
    动态调用事件,事件的方法
    c#发送图片
    c#截屏功能的实现
    devexpress中文讨论论坛
    解析javascript变量
    devexpress_PivotGrid说明
    python学习之老男孩python全栈第九期_day022知识点总结——初识面向对象
    python学习之老男孩python全栈第九期_day022作业
    员工信息表
  • 原文地址:https://www.cnblogs.com/Awen-/p/5397253.html
Copyright © 2020-2023  润新知