Java(五)
♥作业1:
显示指定路径所有文件及实现文件筛选。智能监控,程序能自动在下拉菜单生成任意路径下文件所有尾缀。@V14_%D.gif)
代码内注释内容为步骤与整体思路 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.HashMap;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder; /**
* 文件排序系统。
*
* @author
*
*/
public class FileUtils { /**
* 用于存储分类后的文件。
* key:后缀名, value:StringBuilder存储对应的文件。
*/
private HashMap<String, StringBuilder> resultMap = new HashMap<String, StringBuilder>(); /**
* 监听文件目录。
*
* @param dir 目录。
* @throws IllegalAccessException 访问非法异常。
*/
public void listenDirectory(File dir) throws IllegalAccessException {
if (!dir.exists()) {
throw new IllegalAccessException("目录" + dir + "不存在。");
} if (!dir.isDirectory()) {
throw new IllegalArgumentException(dir + "不是目录");
} String[] fileNames = dir.list();
resultMap.put("all", new StringBuilder()); //默认所有文件。
resultMap.put("folder", new StringBuilder()); //文件夹形式。 //后缀。
String suffix;
for (String fileName : fileNames) {
resultMap.get("all").append(fileName + "\n");
if (fileName.indexOf(".") > 0) {
suffix = fileName.substring(fileName.indexOf("."), fileName.length()); if (!resultMap.containsKey(suffix)) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(fileName + "\n");
resultMap.put(suffix, stringBuilder);
} else {
resultMap.get(suffix).append(fileName + "\n");
}
} else {
resultMap.get("folder").append(fileName + "\n");
}
} buildGUI();
} /**
* 搭建GUI。
*/
public void buildGUI() {
final JTextArea fileList = new JTextArea();
fileList.setText(resultMap.get("all").toString());
String[] likes = new String[resultMap.keySet().size()];
resultMap.keySet().toArray(likes);
final JComboBox combox = new JComboBox(likes); JFrame frm = new JFrame();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(6, 10, 10, 10));
contentPane.setLayout(new BorderLayout(5, 5));
contentPane.add(combox, BorderLayout.NORTH); JPanel pane = new JPanel();
pane.setLayout(new BorderLayout(8, 8)); JLabel label = new JLabel(" File lists :");
label.setFont(new Font("Serif", Font.PLAIN, 16)); fileList.setForeground(new Color(140, 171, 226));
fileList.setBackground(Color.white);
fileList.setSelectedTextColor(new Color(87, 49, 134));
fileList.setForeground(Color.black); JScrollPane scrollPane = new JScrollPane(fileList);
scrollPane.setColumnHeaderView(label); pane.add(scrollPane, BorderLayout.CENTER);
contentPane.add(pane, BorderLayout.CENTER);
frm.add(contentPane);
frm.setBounds(500, 300, 300, 400);
frm.setVisible(true); //JComboBox事件监听。
combox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// 获取组合框的item
String item = (String) combox.getItemAt(combox.getSelectedIndex());
fileList.setText(resultMap.get(item).toString());
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
} public static void main(String[] args) {
String path = "D:\\";
try {
new FileUtils().listenDirectory(new File(path));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
下面是结果:
(1)D盘 文件类型较多

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















♥作业2:正在努力改进中…(˘•ω•˘)ง老师请谅解
Java(五)的更多相关文章
- Java(五、类和对象中的例题)
一.方法中的参数为数值型的(int) import java.util.Scanner; public class ScoreCalc { public void calc(int num1,int ...
- 接口自动化:HttpClient + TestNG + Java(五) - 接口测试数据驱动
在上一篇中,我们实现了post方法请求的封装和测试,这一篇我们做测试数据的分离. 5.1 测试数据处理思路 5.1.1 测试数据分离 这里我想到,我们之前的测试demo里,全都是在testNG类里去写 ...
- 行为驱动:Cucumber + Selenium + Java(五) - 使用maven来实现cucumber测试和报告
在上一篇中,我们介绍了Selenium + Cucumber + Java框架下的测试用例参数化/数据驱动,这一篇我们来使用maven去搭建cucumber框架以及实现测试报告. 5.1 为什么要用m ...
- Java五种基本的Annotation,提高程序的可读性
从JDK5开始,Java增加了对元数据的支持,也就是Annotation(即注解也被翻译为注释). 这里的Annotation和普通的注释有一定的区别,它是代码中的特殊标记,这些标记可以在编译.类加载 ...
- [转]Java五个最常用的集合类之间的区别和联系
Map<String, ?>只能是只读模式,不能增加,因为增加的时候不知道该写入什么类型的值:Map<String, Object>可以读和写,只要是所有Object类的子类都 ...
- Core Java(五)
类和对象&方法 ——类的定义 现实世界的事物 属性:人的身高,体重等 行为:人可以学习,吃饭等 Java中用class描述事物也是如此 成员变量:就是事物的属性 成员方法:就是事物的行为 ...
- 巩固java(五)----通过实例理解java多态
package duotai; class A{ public String show(){ return "A"; } } class B extends A{ public S ...
- java 五十条数据分为一组
public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for(int ...
- Java五种单例区别
详细请参考如下链接: http://www.voidcn.com/article/p-shzgsluz-bqa.html https://blog.csdn.net/android_freshman/ ...
随机推荐
- UITabBarController
Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈<「『[[[〝﹙﹛﹝$(.[{£¥ !%),.:;>?] ...
- MVC5+EF6 入门完整教程六
本篇我们谈谈分部视图(Partial View). 上篇文章提到过Partial和Action这两个helper, 本篇文章主要就结合这两个helper来讲解分部视图(Partial View)的应用 ...
- navicat 创建的表,username字段不能接受中文名字。
用navicat 创建的表,username(varchar)字段不能接受中文名字. 解决方法如下: 选中所创建的users表,打开“设计表”,选中username字段,看到下面是字符集latin1, ...
- (转)Spring中@Async用法总结
原文:http://blog.csdn.net/blueheart20/article/details/44648667 引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的: ...
- linux 安装mysql两种方式
yum -y install gcc gcc-c++ ncurses-devel cmake bison zlib zlib-devel libxml openssl dtrace ...
- <button>标签与<input type="button">标签
<script type="text/javascript" src="/jquery-1.11.3.min.js"></script> ...
- JS中的数据类型检测
JavaScript的数据类型分为两类:原始类型(primitive type)和对象类型(object type).原始类型有5种,分别是:数字(Number).字符串(String).布尔值(Bo ...
- Mybatis中#{}和${}传参的区别
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111&qu ...
- CentOS 安装VNC Server
环境 服务器:192.168.10.181 系统:CentOS 6.0 安装过程 1.切换至root用户 2.检测系统是否安装VNC [root@Nginx canyouNgx]# rpm -q vn ...
- 如何在ashx页面获取Session值
[转] 在一般事务处理页面,可以轻松的得到 Request,Response对象,从而进行相应的操作,如下: HttpRequest Request = context.Request; Http ...