这几天在做练习,感觉都没有原来顺手了,不知道为什么 ,本来想写一个找点信心的,但还是觉得写一个文件和界面练习的;
技术点:图形界面 swing awt
JTextArea();设置多行文本 JTextField()设置输入框 JScrollPane()设置滚动条
Graphics g = panel.getGraphics();获取画布
File类的应用 isFile();判断是文件 isDirectory();判断是文件目录 getAbsolutePath()文件的路劲
监听器:动作监听器 ActionListener
在容器中可以使用getText来获取内容
//创建文件搜索
package com.iteye.com;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
* 创建一个文件搜索的类
*
* @author Administrator
*
*/
public class FileShowUI extends JFrame {
//文件路径
private String name;
//默认结果是0
private int result= 0;
//设置多行文本
private JTextArea area;
public static void main(String[] args) {
FileShowUI Fui = new FileShowUI();
Fui.showui();
}
// 设置绘制窗体的方法
public void showui() {
this.setTitle("文件搜索");
this.setSize(600, 500);
// //设置居中
// this.setLocationRelativeTo(null);
this.setResizable(false);
// 设置布局为空
this.setLayout(null);
// 创建容器,位置,颜色,
JPanel panel = new JPanel();
panel.setBounds(0, 0, 600, 500);
panel.setBackground(Color.LIGHT_GRAY);
// 设置多行文本
area = new JTextArea(24, 48);
// 添加输入框
final JTextField field = new JTextField(10);
// 设置按钮
JButton search = new JButton("查找");
JButton start = new JButton("开始搜索");
JButton end = new JButton("结束搜索");
// 将组件添加到容器中
panel.add(area);
panel.add(field);
panel.add(search);
panel.add(start);
panel.add(end);
// 将容器添加到窗体中
this.add(panel);
// panel的布局位置
this.add(panel, BorderLayout.NORTH);
this.add(area, BorderLayout.CENTER);
// 将多行文本添加到滚动条中
JScrollPane pane = new JScrollPane(area);
pane.setPreferredSize(new Dimension(550, 400));
panel.add(pane);
// 设置窗体显示
this.setVisible(true);
//得到窗体上的画布
Graphics g = panel.getGraphics();
//添加监听器
ActionListener lis = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取输入框中的字符串
name = field.getText();
int count =countFile(name);
if(count == 0){
area.append("您输入的文件不存在\n");
System.out.println("您输入的文件不存在");
}else{
area.append("文件有"+count+"个\n");
}
area.append("您所查找的文件总数为"+count+"个");
System.out.println("您所查找的文件总数为"+count+"个");
}
};
//将搜索按钮添加监听器
start.addActionListener(lis);
}
//定义判断文件的方法
public int countFile(String name){
//创建file的对象
File file = new File(name);
//判断路径是否存在
if(!file.exists()){
System.out.println("提供的路径不存在!");
return 0;
}
//将的得到的路径存储到数组中
File[] fs =file.listFiles();
//判断得到的是否是一个文件
if(fs==null){
System.out.println("提供的路径不是一个标准文件");
return 0;
}
//遍历数组
for(int i =0;i<fs.length;i++){
//将遍历的数组赋给f
File f = fs[i];
//取得文件的路径
String str = f.getAbsolutePath();
//将文件路径添加到多行文本区域中
area.append(str+"\n");
//判断是不是文件
if(f.isFile()){
result++;
// System.out.println("找到文件"+str);
//如果是目录就用递归来做
}else if(f.isDirectory()){
result +=countFile(str);
}
}
return result;
}
}