A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kongdun1991 中级黑马   /  2016-6-2 23:03  /  677 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Demo {
  2.         public static void main(String[] args) {
  3.                 new SearchFrame().setVisible(true);
  4.         }
  5. }
  6. [code]import java.awt.Dimension;
  7. import java.awt.Font;
  8. import java.awt.TextArea;
  9. import java.awt.Toolkit;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.io.File;

  13. import javax.swing.JButton;
  14. import javax.swing.JFrame;
  15. import javax.swing.JLabel;
  16. import javax.swing.JOptionPane;
  17. import javax.swing.JTextField;

  18. public class SearchFrame extends JFrame {
  19.         private JTextField dirTxt = new JTextField();// 目录文本框
  20.         private JTextField keyTxt = new JTextField();// 关键字文本框
  21.         private TextArea resultArea = new TextArea();// 搜索结果文本域
  22.         private JLabel lab3 = new JLabel("文件:  0个  目录:  0个");
  23.        
  24.         //定义文件和目录统计数
  25.         private int fileCount = 0;
  26.         private int dirCount = 0;
  27.         // 构造方法
  28.         public SearchFrame() {
  29.                 super();
  30.                 // 初始化窗体
  31.                 init();
  32.                 // 添加组件
  33.                 addComponent();

  34.         }

  35.         private void addComponent() {
  36.                 // 添加标签--目录
  37.                 JLabel lab1 = new JLabel("目录:");
  38.                 lab1.setBounds(30, 20, 50, 30);
  39.                 lab1.setFont(new Font("楷体", Font.BOLD, 16));
  40.                 this.add(lab1);
  41.                 // 添加目录文本框

  42.                 dirTxt.setBounds(80, 20, 250, 30);
  43.                 this.add(dirTxt);
  44.                 // 添加标签--关键字
  45.                 JLabel lab2 = new JLabel("关键字:");
  46.                 lab2.setBounds(350, 20, 70, 30);
  47.                 lab2.setFont(new Font("楷体", Font.BOLD, 16));
  48.                 this.add(lab2);
  49.                 // 添加关键字文本框

  50.                 keyTxt.setBounds(420, 20, 80, 30);
  51.                 this.add(keyTxt);
  52.                 // 添加搜索按钮
  53.                 JButton but = new JButton("搜索");
  54.                 but.setBounds(520, 20, 80, 30);
  55.                 but.setFont(new Font("楷体", Font.BOLD, 18));
  56.                 but.addActionListener(new ActionListener() {// 实现搜索功能

  57.                         @Override
  58.                         public void actionPerformed(ActionEvent e) {
  59.                                 //重置计数
  60.                                 fileCount = 0;
  61.                                 dirCount = 0;
  62.                                 resultArea.setText(null);
  63.                                 // 调用搜索方法
  64.                                 searchFile();
  65.                                 lab3.setText("文件:  " +fileCount + "个  目录:  " + dirCount + "个");
  66.                                 return;
  67.                         }
  68.                 });
  69.                 this.add(but);
  70.                 // 添加文本域

  71.                 resultArea.setBounds(30, 80, 580, 300);
  72.                 resultArea.setFont(new Font("楷体",Font.BOLD,12));
  73.                 this.add(resultArea);
  74.                 //添加标签--统计结果
  75.                
  76.                 lab3.setBounds(30, 400, 250, 30);
  77.                 lab3.setFont(new Font("楷体",Font.BOLD,16));
  78.                 this.add(lab3);

  79.         }

  80.         // 搜索方法
  81.         protected void searchFile() {
  82.                 // 判断文本框不为空
  83.                 if (this.dirTxt.getText().trim().length() == 0) {
  84.                         JOptionPane.showMessageDialog(this, "请输入要搜索的目录!");
  85.                         return;
  86.                 }
  87.                 if (this.keyTxt.getText().trim().length() == 0) {
  88.                         JOptionPane.showMessageDialog(this, "你请输入关键字!");
  89.                         return;
  90.                 }
  91.                 // 判断目录是否存在
  92.                 File file = new File(this.dirTxt.getText());
  93.                 if (!file.exists()||!file.isDirectory()) {
  94.                         JOptionPane.showMessageDialog(this, "您输入的目录不存在!");
  95.                         return;
  96.                 }

  97.                 // 遍历文件
  98.                 printFile(file);

  99.         }

  100.         // 遍历文件
  101.         private void printFile(File file) {
  102.                 File[] fileArray = file.listFiles();
  103.                 if (fileArray != null) {
  104.                         for (File f : fileArray) {
  105.                                 if (f.isFile() && f.getName().contains(this.keyTxt.getText())) {
  106.                                         // 显示文件路径到搜索结果文本域中
  107.                                         this.fileCount++;
  108.                                         if(this.resultArea.getText().length() != 0){
  109.                                                 this.resultArea.append("\r\n");
  110.                                         }
  111.                                         this.resultArea.append(f.getAbsolutePath());
  112.                                 } else if (f.isDirectory()) {
  113.                                         this.dirCount++;
  114.                                         printFile(f);
  115.                                 }
  116.                         }
  117.                 }
  118.         }

  119.         // 初始化窗体
  120.         private void init() {
  121.                 // 定义标题
  122.                 this.setTitle("文件搜索器");
  123.                 // 窗体大小
  124.                 this.setSize(650, 500);
  125.                 // 窗体居中
  126.                 Toolkit kit = this.getToolkit();
  127.                 Dimension screenSize = kit.getScreenSize();
  128.                 int x = (screenSize.width - this.getWidth()) / 2;
  129.                 int y = (screenSize.height - this.getHeight()) / 2;
  130.                 this.setLocation(x, y);
  131.                 // 实现关闭行为
  132.                 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  133.                 // 设置默认布局格式
  134.                 this.setLayout(null);
  135.         }

  136. }
复制代码
[/code]

上述代码是为了实现文件搜索功能,但有错误,希望大神帮忙找出

2 个回复

倒序浏览
大神啊,完全看不懂啊,学习学习.
回复 使用道具 举报
满满的都是心塞啊,大声你是怎么敲出来的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马