- public class Demo {
- public static void main(String[] args) {
- new SearchFrame().setVisible(true);
- }
- }
- [code]import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.TextArea;
- import java.awt.Toolkit;
- 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.JLabel;
- import javax.swing.JOptionPane;
- import javax.swing.JTextField;
- public class SearchFrame extends JFrame {
- private JTextField dirTxt = new JTextField();// 目录文本框
- private JTextField keyTxt = new JTextField();// 关键字文本框
- private TextArea resultArea = new TextArea();// 搜索结果文本域
- private JLabel lab3 = new JLabel("文件: 0个 目录: 0个");
-
- //定义文件和目录统计数
- private int fileCount = 0;
- private int dirCount = 0;
- // 构造方法
- public SearchFrame() {
- super();
- // 初始化窗体
- init();
- // 添加组件
- addComponent();
- }
- private void addComponent() {
- // 添加标签--目录
- JLabel lab1 = new JLabel("目录:");
- lab1.setBounds(30, 20, 50, 30);
- lab1.setFont(new Font("楷体", Font.BOLD, 16));
- this.add(lab1);
- // 添加目录文本框
- dirTxt.setBounds(80, 20, 250, 30);
- this.add(dirTxt);
- // 添加标签--关键字
- JLabel lab2 = new JLabel("关键字:");
- lab2.setBounds(350, 20, 70, 30);
- lab2.setFont(new Font("楷体", Font.BOLD, 16));
- this.add(lab2);
- // 添加关键字文本框
- keyTxt.setBounds(420, 20, 80, 30);
- this.add(keyTxt);
- // 添加搜索按钮
- JButton but = new JButton("搜索");
- but.setBounds(520, 20, 80, 30);
- but.setFont(new Font("楷体", Font.BOLD, 18));
- but.addActionListener(new ActionListener() {// 实现搜索功能
- @Override
- public void actionPerformed(ActionEvent e) {
- //重置计数
- fileCount = 0;
- dirCount = 0;
- resultArea.setText(null);
- // 调用搜索方法
- searchFile();
- lab3.setText("文件: " +fileCount + "个 目录: " + dirCount + "个");
- return;
- }
- });
- this.add(but);
- // 添加文本域
- resultArea.setBounds(30, 80, 580, 300);
- resultArea.setFont(new Font("楷体",Font.BOLD,12));
- this.add(resultArea);
- //添加标签--统计结果
-
- lab3.setBounds(30, 400, 250, 30);
- lab3.setFont(new Font("楷体",Font.BOLD,16));
- this.add(lab3);
- }
- // 搜索方法
- protected void searchFile() {
- // 判断文本框不为空
- if (this.dirTxt.getText().trim().length() == 0) {
- JOptionPane.showMessageDialog(this, "请输入要搜索的目录!");
- return;
- }
- if (this.keyTxt.getText().trim().length() == 0) {
- JOptionPane.showMessageDialog(this, "你请输入关键字!");
- return;
- }
- // 判断目录是否存在
- File file = new File(this.dirTxt.getText());
- if (!file.exists()||!file.isDirectory()) {
- JOptionPane.showMessageDialog(this, "您输入的目录不存在!");
- return;
- }
- // 遍历文件
- printFile(file);
- }
- // 遍历文件
- private void printFile(File file) {
- File[] fileArray = file.listFiles();
- if (fileArray != null) {
- for (File f : fileArray) {
- if (f.isFile() && f.getName().contains(this.keyTxt.getText())) {
- // 显示文件路径到搜索结果文本域中
- this.fileCount++;
- if(this.resultArea.getText().length() != 0){
- this.resultArea.append("\r\n");
- }
- this.resultArea.append(f.getAbsolutePath());
- } else if (f.isDirectory()) {
- this.dirCount++;
- printFile(f);
- }
- }
- }
- }
- // 初始化窗体
- private void init() {
- // 定义标题
- this.setTitle("文件搜索器");
- // 窗体大小
- this.setSize(650, 500);
- // 窗体居中
- Toolkit kit = this.getToolkit();
- Dimension screenSize = kit.getScreenSize();
- int x = (screenSize.width - this.getWidth()) / 2;
- int y = (screenSize.height - this.getHeight()) / 2;
- this.setLocation(x, y);
- // 实现关闭行为
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // 设置默认布局格式
- this.setLayout(null);
- }
- }
复制代码 [/code]
上述代码是为了实现文件搜索功能,但有错误,希望大神帮忙找出 |
|