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 + "\n");
 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 + "\n");
 59                     resultMap.put(suffix, stringBuilder);
 60                 } else {
 61                     resultMap.get(suffix).append(fileName + "\n");
 62                 }
 63             } else {
 64                 resultMap.get("folder").append(fileName + "\n");
 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:正在努力改进中…(?•ω•?)?老师请谅解

时间: 2024-09-30 06:42:05

Java(五)的相关文章

Java(五、类和对象中的例题)

一.方法中的参数为数值型的(int) import java.util.Scanner; public class ScoreCalc { public void calc(int num1,int num2,int num3){ int sum = num1 + num2 +num3; double avg = sum / 3; System.out.println("总成绩:"+sum); System.out.println("平均分:"+avg); } pu

[转]Java五个最常用的集合类之间的区别和联系

常用的集合类有一下几种: List结构的集合类:ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类:HashMap类,Hashtable类 Set结构的集合类:HashSet类,TreeSet类 Queue结构的集合:Queue接口 HashMap和Hashtable的区别: HashMap和Hashtable都是java的集合类,都可以用来存放java对象,这是他们的相同点 以下是他们的区别: 1.历史原因: Hashtable是基于陈旧的Dicti

Java五种基本的Annotation,提高程序的可读性

从JDK5开始,Java增加了对元数据的支持,也就是Annotation(即注解也被翻译为注释). 这里的Annotation和普通的注释有一定的区别,它是代码中的特殊标记,这些标记可以在编译.类加载或者运行时被读取,并执行相应的处理.通过这样的注解,可以帮助开发人员在不改变原有的逻辑的情况下,在源文件中补充一些信息.而代码分析工具.开发工具和部署工具可以通过这些补充信息进行验证或者进行部署. Annotation可以用来为程序元素(类.方法.成员变量等)设置元数据,值得一提的是,它不会影响代码

巩固java(五)----通过实例理解java多态

package duotai; class A{ public String show(){ return "A"; } } class B extends A{ public String show(){ return "B"; } public String onlyB(){ return "onlyB"; } } class C extends B{ public String show(){ return "C"; }

JAVA五周作业

代码如下 我从C盘中扫描指定位置的文件再将其显示到界面并添加了下拉菜单和列表框运行效果

Think in Java(五):多态

1. 动态绑定 又称"后期绑定"或"运行时绑定",它的含义就是在运行时判断对象的类型,从而调用恰当的方法 public class Shapes { private static RandomShapeGenerator gen = new RandomShapeGenerator(); public static void main(String[] args) { Shape[] shapeArr = new Shape[9]; // 填充数组 for (int

java 五十条数据分为一组

public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for(int i=0;i<70;i++){ list.add(i); } int toIndex = 50; for (int i = 0; i < list.size(); i+=50) { if (i+50>list.size()) { toIndex = list.size() - i; } Li

【学习笔记】Java中生成对象的5中方法

概述:本文介绍以下java五种创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式. 2.使用Class类的newInstance方法 3.运用反射手段,调用java.lang.reflect.Constructor类的newInstance()实例方法. 4.调用对象的clone()方法. 5.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法. 一.使用new关键字 这是最常见也是最简单的创建对象的方式了.通过这种方式

Java IO 之File操作

一.File中的两个常量分隔符 package File; import java.io.File; /** * 两个常量 * 1.路径分隔符 ; * 2.名称分隔符 \ (windows) /(linux等) */ @SuppressWarnings("all") public class Demo01 { public static void main(String[] args) { System.out.println(File.pathSeparator); System.o