Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 284|回复: 0

[Swing学习]本地文件搜索引擎

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-4 23:56:03 | 显示全部楼层 |阅读模式
    1. [img]http://img.javaxxz.com/2014/11/4/235603031.jpg[/img]
    2. import java.io.*;
    3. import java.awt.*;
    4. import java.awt.event.*;
    5. import javax.swing.*;
    6. public class FindFrame extends JFrame
    7. {
    8.         public FindFrame()
    9.         {
    10.           this.setTitle("本地文件搜索引擎");
    11.                 this.setSize(600, 400);
    12.                 this.setLocationRelativeTo(null);
    13.                 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    14.                
    15.                 this.add(new FindPanel());
    16.         }       
    17.         public static void main(String[] args)
    18.         {
    19.     FindFrame frame=new FindFrame();
    20.                 frame.setVisible(true);
    21.         }
    22. }
    23. class FindPanel extends JPanel
    24. {
    25.         private JLabel findLabel, pathLabel;
    26.         private JTextField findField, showPathField;
    27.         private JComboBox pathBox;
    28.   private JTextArea resultArea;
    29.         private JButton findButton;
    30.        
    31.         public FindPanel()
    32.         {       
    33.                 this.setLayout(null);
    34.                 findLabel=new JLabel("全部或部分文件名");
    35.                 findLabel.setFont(new Font("仿宋", Font.BOLD, 20));
    36.                 findLabel.setSize(200, 60);               
    37.                 findLabel.setLocation(10, 10);
    38.                
    39.                 findField=new JTextField();
    40.                 findField.setSize(200, 25);
    41.                 findField.setLocation(10, 55);
    42.                
    43.                 pathLabel=new JLabel("在这里寻找");
    44.                 pathLabel.setFont(new Font("仿宋", Font.BOLD, 20));
    45.                 pathLabel.setSize(200, 60);
    46.                 pathLabel.setLocation(10, 65);
    47.                
    48.    String[] pathString={"C:", "D:", "E:", "F:", "H:", "I:", "J:", "K:", "L:"};
    49.                 pathBox=new JComboBox(pathString);
    50.                 pathBox.setSize(200, 25);
    51.                 pathBox.setLocation(10, 110);
    52.             
    53.                 findButton=new JButton("搜索");
    54.                 findButton.setFont(new Font("仿宋", Font.BOLD, 15));
    55.    findButton.setSize(80, 30);
    56.    findButton.setLocation(65, 145);
    57.                
    58.    resultArea=new JTextArea();
    59.                 resultArea.setEnabled(false);
    60.                 resultArea.setFont(new Font("宋体", Font.PLAIN, 20));
    61.                
    62.                 JScrollPane area=new JScrollPane(resultArea);
    63.                 area.setSize(350, 330);
    64.             area.setLocation(220, 10);
    65.             
    66.             showPathField=new JTextField();
    67.             showPathField.setEditable(false);
    68.             showPathField.setSize(600, 25);
    69.             showPathField.setLocation(0, 340);
    70.                                                       
    71.             this.add(findLabel);
    72.             this.add(findField);
    73.             this.add(pathLabel);
    74.             this.add(pathBox);
    75.             this.add(findButton);
    76.             this.add(area);
    77.             this.add(showPathField);
    78.                                
    79.             findButton.addActionListener(new ActionListener(){
    80.                     public void actionPerformed(ActionEvent arg0)
    81.                     {
    82.                             resultArea.setText(null);  //清空文本区
    83.                             //线程
    84.                                 new Thread()
    85.                                 {
    86.                                         public void run()
    87.                                         {
    88.                                                 listfile((String)pathBox.getSelectedItem()+File.separator);
    89.                                         }
    90.                                 }.start();                           
    91.                     }
    92.             });
    93.         }       

    94.         //构建一个取得抽象路径名数组的方法
    95.         public void listfile(String path)
    96.         {
    97.                 //初始化并创建文件类
    98.                 File file=new File(path);
    99.                
    100.                 //调用所创建的过滤器方法
    101.                 File[] files=file.listFiles(new MyFile());
    102.                
    103.                 for(int i=0; i< files.length; i++)
    104.                 {
    105.                         //如果此抽象路径名表示的文件是一个标准文件。
    106.                         if(files[i].isFile())
    107.                         {
    108.                                 //将抽象路径名转换为一个路径名字符串并在显示路径名文本域中显示出来
    109.                                 showPathField.setText(files[i].getPath());
    110.                                 //取得该路径下的文件(父抽象路径名,子路径名字符串)并在文本区中依次显示
    111.                                 resultArea.append("
    112. "+files[i].getAbsolutePath());                               
    113.                         }                       
    114.                         /*
    115.                          *如果此抽象路径名所表示的文件是一个目录并且此抽象路径名所
    116.                           表示文件或目录名称与所输入的文件名不相同
    117.                          */
    118.                         else if(files[i].isDirectory() && !(files[i].getName().equals(findField.getText())))
    119.                         {
    120.                                 //将抽象路径名转换为一个路径名字符串并在显示路径名文本域中显示出来
    121.                                 showPathField.setText(files[i].getPath());
    122.                                 //取得该抽象路径名数组的绝对路径名字符串
    123.                                 listfile(files[i].getAbsolutePath());                       
    124.                         }
    125.                        
    126.                         /*
    127.                          *如果此抽象路径名所表示的文件是一个目录并且此抽象路径名所
    128.                           表示文件或目录名称与所输入的文件名相同
    129.                          */
    130.                         else if(files[i].isDirectory() && (files[i].getName().equals(findField.getText())))
    131.                         {
    132.                                 //将抽象路径名转换为一个路径名字符串并在显示路径名文本域中显示出来
    133.                                 showPathField.setText(files[i].getPath());
    134.                                 //取得该抽象路径名数组的绝对路径名字符串并在文本区中依次显示
    135.                                 resultArea.append("
    136. "+files[i].getAbsolutePath());
    137.                                
    138.                                 //取得该抽象路径名数组的绝对路径名字符串
    139.                                 listfile(files[i].getAbsolutePath());
    140.                         }
    141.                        
    142.                         /*
    143.                          * 如果此抽象路径名所表示的文件不是一个目录或文件并且此抽象路径名所
    144.                            表示的文件或目录名称与所输入的文件名相同
    145.                          */
    146.                         else if(!(files[i].isDirectory()) && files[i].getName().equals(findField.getText()))
    147.                         {
    148.                                 //将抽象路径名转换为一个路径名字符串并在显示路径,名文本域中显示出来
    149.                                 showPathField.setText(files[i].getPath());
    150.                                
    151.                                 //取得该抽象路径名数组的绝对路径名字符串并在文本区中依次显示
    152.                                 resultArea.append("
    153. "+files[i].getAbsolutePath());
    154.                         }
    155.                        
    156.                         else
    157.                         {
    158.                                 //将抽象路径名转换为一个路径名字符串并在显示路径,名文本域中显示出来
    159.                                 showPathField.setText(files[i].getPath());
    160.                                 //取得该抽象路径名数组的绝对路径名字符串
    161.                                 listfile(files[i].getAbsolutePath());
    162.                         }
    163.                 }
    164.         }       

    165.        
    166.         /*
    167.          * 使用FilenameFilter接口创建一个用于过滤器文件名的类实例。并使用这些实例过滤
    168.            File类的list方法中的目录清单。(添加创建一个过滤器)
    169.          */
    170.         class MyFile implements FilenameFilter
    171.         {
    172.                 /*
    173.                  * 测试指定文件是否应该包含在某一文件列表中(dir:被找到的文件所在的目录。
    174.                    name:文件的名称。)
    175.                  */
    176.                 public boolean accept(File dir, String name)
    177.                 {
    178.                         //初始化该类组件
    179.                         File file=new File(dir, name);
    180.                        
    181.                         /*
    182.                          * 判断此抽象路径名表示的文件是否是一个目录,或者取得由此抽象路径名
    183.                        表示的文件或目录的名称并判断用户所输入框中的文本是否为后缀名。
    184.                          */
    185.                         return (file.isDirectory() || file.getName().endsWith(findField.getText()));
    186.                 }
    187.         }
    188. }
    复制代码

      


    源码下载:http://file.javaxxz.com/2014/11/4/235603265.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 13:27 , Processed in 0.400121 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表