java开发_快速搜索本地文件_小应用程序

先来看看效果:

这是一个Application运行效果

然后我突发奇想,我之前做过一个Application叫做:java开发_java小程序_邮死你(yousini)_源码下载

为什么不去修改它的源代码,把这个功能实现在一个桌面应用程序中去呢?

就这样有一个java小程序就这样诞生啦....

==========================================================

代码部分:

==========================================================

上面的Application代码:

 1 /**
 2  * 
 3  */
 4 package com.b510;
 5 
 6 import java.io.File;
 7 import java.util.Date;
 8 
 9 public class ThreadDemo implements Runnable {
10     // 要统计的磁盘路径
11     private String path;
12 
13     // 构造方法
14     public ThreadDemo(String path) {
15         this.path = path;
16     }
17 
18     // 主方法
19     public static void main(String[] args) {
20         // 得到根目录
21         File[] root = File.listRoots();
22         System.out.println("所有目录:");
23         for (int i = 0; i < root.length; i++) {
24             System.out.println(root[i].getAbsolutePath());
25         }
26         System.out.println("=====================================");
27         for (int i = 0; i < root.length; i++) {
28             System.out.println("开始处理:" + root[i].getAbsolutePath() + " 目录...");
29             // 创建线程对象
30             ThreadDemo td = new ThreadDemo(root[i].getAbsolutePath());
31             new Thread(td).start();
32         }
33     }
34 
35     // 重写run方法
36     public void run() {
37         long start = new Date().getTime();
38         int num = countFile(path);
39         long end = new Date().getTime();
40         System.out.println(path + "统计共有" + num + "个文件!共耗时:[" + (end - start) + "]ms");
41     }
42 
43     // 统计文件数目的方法
44     public int countFile(String path) {
45         int count = 0;
46         File file = new File(path);
47         // 得到该目录下的所有文件
48         File[] subFile = file.listFiles();
49         // 如果该目录为空或
50         if (null == subFile || subFile.length == 0) {
51             return count;
52         }
53         for (int i = 0; i < subFile.length; i++) {
54             if (subFile[i].isDirectory()) {
55                 // System.out.println(subFile[i].getAbsolutePath());
56                 count += countFile(subFile[i].getAbsolutePath());
57             } else if (subFile[i].isFile()) {
58                 if (getPostfix(subFile[i].getName()).equals("gif")) {
59                     System.out.println("文件名称:" + subFile[i].getAbsolutePath());
60                 }
61                 count++;
62             }
63         }
64         return count;
65     }
66 
67     /**
68      * 获取inputFilePath的后缀名,如:"e:/test.pptx"的后缀名为:"pptx"<br>
69      * 
70      * @param inputFilePath
71      * @return
72      */
73     public String getPostfix(String inputFilePath) {
74         return inputFilePath.substring(inputFilePath.lastIndexOf(".") + 1);
75     }
76 
77 }

下面的桌面应用程序代码:

主要参考java开发_java小程序_邮死你(yousini)_源码下载

我把修改的类的代码贴出来:(其实就修改了两个类 ^_^)

/SearchFiles/src/com/b510/sendmail/main/SendMailMain.java

 1 package com.b510.sendmail.main;
 2 
 3 import com.b510.sendmail.ui.SendMailUI;
 4 
 5 /**
 6  * @author Hongten
 7  * 
 8  * @time 2012-4-4 2012
 9  */
10 public class SendMailMain {
11     public static void main(String[] args) {
12         SendMailUI sendMailUI = new SendMailUI("MySearchFileUtil v1.0");
13     }
14 }

/SearchFiles/src/com/b510/sendmail/ui/SendMailUI.java

  1 package com.b510.sendmail.ui;
  2 
  3 import java.awt.Graphics;
  4 import java.awt.event.ActionEvent;
  5 import java.awt.event.ActionListener;
  6 import java.awt.event.WindowAdapter;
  7 import java.awt.event.WindowEvent;
  8 
  9 import javax.swing.ImageIcon;
 10 import javax.swing.JFrame;
 11 import javax.swing.JOptionPane;
 12 import javax.swing.JPanel;
 13 
 14 import com.b510.sendmail.utils.AboutSendmail;
 15 
 16 /**
 17  * 
 18  * @author Hongten
 19  */
 20 public class SendMailUI extends JFrame implements ActionListener {
 21 
 22     public static javax.swing.JTextArea infoShow;
 23     private javax.swing.JScrollPane jScrollPane1;
 24     private javax.swing.JPanel mainPanel;
 25     private javax.swing.JMenuBar menuBar;
 26     private javax.swing.JButton send;
 27     private javax.swing.JProgressBar showTime;
 28     private javax.swing.JTextField targetmail;
 29     javax.swing.JMenu fileMenu;
 30     javax.swing.JMenuItem exitMenuItem;
 31     javax.swing.JMenu helpMenu;
 32     javax.swing.JMenuItem aboutMenuItem;
 33     private static boolean flag;
 34     private static int number = 266;
 35     private int i = 0;
 36     private AboutSendmail aboutSendmail;
 37     /**
 38      * 定义图盘图盘标志
 39      */
 40     public boolean iconed = false;
 41     /** 定义托盘 */
 42     MyTray myTray;
 43 
 44     /**
 45      * 版本号
 46      */
 47     private static final long serialVersionUID = -6601825053136983041L;
 48 
 49     public SendMailUI(String title) {
 50         this.setTitle(title);
 51         init();
 52     }
 53 
 54     /**
 55      * 主界面初始化
 56      */
 57     public void init() {
 58 
 59         mainPanel = new JPanel() {
 60             private static final long serialVersionUID = 1L;
 61 
 62             protected void paintComponent(Graphics g) {
 63                 ImageIcon icon = new ImageIcon("src/resources/mail_bg.png");
 64                 g.drawImage(icon.getImage(), 0, 0, 700, 430, null);
 65             }
 66         };
 67 
 68         targetmail = new javax.swing.JTextField();
 69         send = new javax.swing.JButton();
 70         jScrollPane1 = new javax.swing.JScrollPane();
 71         infoShow = new javax.swing.JTextArea();
 72         menuBar = new javax.swing.JMenuBar();
 73         fileMenu = new javax.swing.JMenu();
 74         exitMenuItem = new javax.swing.JMenuItem();
 75         helpMenu = new javax.swing.JMenu();
 76         aboutMenuItem = new javax.swing.JMenuItem();
 77         // 设置为0到180,即180s,3分钟
 78         showTime = new javax.swing.JProgressBar(0, number);
 79         aboutSendmail = new AboutSendmail("关于软件");
 80         aboutSendmail.setVisible(false);
 81 
 82         // 是否在进度条上显示字符
 83         showTime.setStringPainted(true);
 84 
 85         mainPanel.setName("mainPanel"); // NOI18N
 86 
 87         targetmail.setName("targetmail"); // NOI18N
 88         // targetmail.setText("hongtenzone@foxmail.com");
 89 
 90         send.setText("search"); // NOI18N
 91         send.setName("search"); // NOI18N
 92         send.setEnabled(false);
 93         send.addActionListener(this);
 94 
 95         jScrollPane1.setName("jScrollPane1"); // NOI18N
 96 
 97         infoShow.setColumns(20);
 98         infoShow.setRows(5);
 99         infoShow.setName("infoShow"); // NOI18N
100         jScrollPane1.setViewportView(infoShow);
101         // 初始化布局
102         initComponent();
103 
104         menuBar.setName("menuBar"); // NOI18N
105 
106         fileMenu.setName("fileMenu"); // NOI18N
107         fileMenu.setText("file");
108 
109         exitMenuItem.setText("exit");
110         fileMenu.add(exitMenuItem);
111         exitMenuItem.addActionListener(this);
112 
113         menuBar.add(fileMenu);
114 
115         helpMenu.setText("help"); // NOI18N
116         helpMenu.setName("helpMenu"); // NOI18N
117 
118         aboutMenuItem.setText("about");
119         helpMenu.add(aboutMenuItem);
120         aboutMenuItem.addActionListener(this);
121 
122         menuBar.add(helpMenu);
123 
124         this.add(mainPanel);
125         setJMenuBar(menuBar);
126 
127         this.setVisible(true);
128         this.setSize(700, 485);
129         // 启动进度条记时监听器
130         timeCardListener();
131         // 启动邮箱输入框监听器
132         myListener();
133         // this.pack();
134         this.setLocationRelativeTo(null);
135         this.setResizable(false);
136         // this.setLocation(470, 250);
137         // this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
138         // 当点击"-"最小化按钮时,系统会最小化到托盘
139         addWindowListener(new WindowAdapter() {
140             public void windowIconified(WindowEvent e) {
141                 iconed = true;
142                 setVisible(false);
143             }
144 
145             public void windowClosing(WindowEvent e) {
146                 // 当点击"X"关闭窗口按钮时,会询问用户是否要最小化到托盘
147                 // 是,表示最小化到托盘,否,表示退出
148                 int option = JOptionPane.showConfirmDialog(SendMailUI.this, "是否最小化到托盘?", "提示:", JOptionPane.YES_NO_OPTION);
149                 if (option == JOptionPane.YES_OPTION) {
150                     iconed = true;
151                     SendMailUI.this.setVisible(false);
152                 } else {
153                     System.exit(0);
154                 }
155             }
156         });
157         // 初始化自定义托盘
158         myTray = new MyTray(SendMailUI.this);
159 
160     }
161 
162     /**
163      * 布局文件,没有必要去管他
164      */
165     private void initComponent() {
166         javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
167         mainPanel.setLayout(mainPanelLayout);
168         mainPanelLayout.setHorizontalGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
169                 mainPanelLayout
170                         .createSequentialGroup()
171                         .addGap(52, 54, 54)
172                         .addGroup(
173                                 mainPanelLayout
174                                         .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
175                                         .addGroup(
176                                                 mainPanelLayout.createSequentialGroup().addComponent(targetmail, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
177                                                         .addGap(34, 34, 37).addComponent(send))
178                                         .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 620, javax.swing.GroupLayout.PREFERRED_SIZE)
179                                         .addGroup(
180                                                 mainPanelLayout.createSequentialGroup().addGap(463, 463, 463)
181                                                         .addComponent(showTime, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
182                         .addContainerGap(30, Short.MAX_VALUE)));
183         mainPanelLayout.setVerticalGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
184                 mainPanelLayout
185                         .createSequentialGroup()
186                         .addContainerGap()
187                         .addGroup(
188                                 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(send)
189                                         .addComponent(targetmail, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(30, 43, 43)
190                         .addComponent(showTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
191                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
192                         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 313, javax.swing.GroupLayout.PREFERRED_SIZE).addGap(15, 15, 15)));
193     }
194 
195     // 进度条记时
196     public void timeCard(final boolean flag) {
197         new Thread(new Runnable() {// 设置一个线程
198                     public void run() {
199                         if (flag) {
200                             while (i < number) {
201                                 try {
202                                     Thread.sleep((long) (1000 * 7.7));
203                                 } catch (Exception e) {
204                                     e.printStackTrace();
205                                 }
206                                 showTime.setValue(i++);
207                             }
208                         } else {
209                             i = 0;
210                             showTime.setValue(0);
211 
212                         }
213                     }
214                 }).start();
215     }
216 
217     // 进度条记时
218     public void timeCardListener() {
219         new Thread(new Runnable() {// 设置一个线程
220                     public void run() {
221                         while (true) {
222                             try {
223                                 Thread.sleep((long) (1000 * 7.7));
224                             } catch (Exception e) {
225                                 e.printStackTrace();
226                             }
227                             timeCard(flag);
228                         }
229                     }
230                 }).start();
231     }
232 
233     @Override
234     public void actionPerformed(ActionEvent e) {
235         if (e.getSource() == send) {
236             infoShow.append("请耐心等待...\n");
237             new SendMail().sendMailListener(targetmail.getText());
238         }
239         // 退出程序
240         if (e.getSource() == exitMenuItem) {
241             System.exit(0);
242         }
243         if (e.getSource() == aboutMenuItem) {
244             aboutSendmail.setVisible(true);
245         }
246     }
247 
248     class SendMail {
249         public void sendMailListener(final String targetmail) {
250             new Thread(new Runnable() {// 设置一个线程
251                         public void run() {
252                             while (true) {
253                                 try {
254                                     // 线程处于睡眠的时候,flag=true;
255                                     Thread.sleep(1);
256                                 } catch (Exception e) {
257                                     e.printStackTrace();
258                                 }
259                                 MySearchUtil.beginSearch(targetmail);
260                                 try {
261                                     // 等待timeCardListener监听器监听时间
262                                     Thread.sleep(1000000000);
263                                 } catch (Exception e) {
264                                 }
265                             }
266                         }
267 
268                     }).start();
269         }
270     }
271 
272     // 邮箱输入框是否正确填写
273     public void changedUpdate() {
274         String mail = targetmail.getText();
275         send.setEnabled(true);
276         if (mail.equals("")) {
277             send.setEnabled(false);
278         } else if (mail.length() > 0) {
279             // 输入内容不为空,且是能够匹配邮箱,那么设置send可用
280             send.setEnabled(true);
281         } else {
282             send.setEnabled(true);
283         }
284     }
285 
286     /**
287      * 邮箱是否填写完整监听器
288      */
289     public void myListener() {
290         new Thread(new Runnable() {// 设置一个线程
291                     public void run() {
292                         while (true) {
293                             try {
294                                 Thread.sleep(500);
295                             } catch (Exception e) {
296                                 e.printStackTrace();
297                             }
298                             changedUpdate();// 填写邮箱
299                         }
300                     }
301                 }).start();
302     }
303 }

 I'm Hongten

 

posted @ 2012-12-09 12:05  Hongten  阅读(7548)  评论(4编辑  收藏  举报
Fork me on GitHub