?? 源代碼.txt
字號:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;
public class FindFrame extends JFrame
{
public FindFrame()
{
this.setTitle("本地文件搜索引擎");
this.setSize(600, 400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(new FindPanel());
}
public static void main(String[] args)
{
FindFrame frame=new FindFrame();
frame.setVisible(true);
}
}
class FindPanel extends JPanel
{
private JLabel findLabel, pathLabel;
private JTextField findField, showPathField;
private JComboBox pathBox;
private JTextArea resultArea;
private JButton findButton;
public FindPanel()
{
this.setLayout(null);
findLabel=new JLabel("全部或部分文件名");
findLabel.setFont(new Font("仿宋", Font.BOLD, 20));
findLabel.setSize(200, 60);
findLabel.setLocation(10, 10);
findField=new JTextField();
findField.setSize(200, 25);
findField.setLocation(10, 55);
pathLabel=new JLabel("在這里尋找");
pathLabel.setFont(new Font("仿宋", Font.BOLD, 20));
pathLabel.setSize(200, 60);
pathLabel.setLocation(10, 65);
String[] pathString={"C:", "D:"};
pathBox=new JComboBox(pathString);
pathBox.setSize(200, 25);
pathBox.setLocation(10, 110);
findButton=new JButton("搜索");
findButton.setFont(new Font("仿宋", Font.BOLD, 15));
findButton.setSize(80, 30);
findButton.setLocation(65, 145);
resultArea=new JTextArea();
resultArea.setEnabled(false);
resultArea.setFont(new Font("宋體", Font.PLAIN, 20));
JScrollPane area=new JScrollPane(resultArea);
area.setSize(350, 330);
area.setLocation(220, 10);
showPathField=new JTextField();
showPathField.setEditable(false);
showPathField.setSize(600, 25);
showPathField.setLocation(0, 340);
this.add(findLabel);
this.add(findField);
this.add(pathLabel);
this.add(pathBox);
this.add(findButton);
this.add(area);
this.add(showPathField);
findButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0)
{
resultArea.setText(null); //清空文本區
//線程
new Thread()
{
public void run()
{
listfile((String)pathBox.getSelectedItem()+File.separator);
}
}.start();
}
});
}
//構建一個取得抽象路徑名數組的方法
public void listfile(String path)
{
//初始化并創建文件類
File file=new File(path);
//調用所創建的過濾器方法
File[] files=file.listFiles(new MyFile());
for(int i=0; i< files.length; i++)
{
//如果此抽象路徑名表示的文件是一個標準文件。
if(files[i].isFile())
{
//將抽象路徑名轉換為一個路徑名字符串并在顯示路徑名文本域中顯示出來
showPathField.setText(files[i].getPath());
//取得該路徑下的文件(父抽象路徑名,子路徑名字符串)并在文本區中依次顯示
resultArea.append("\n"+files[i].getAbsolutePath());
}
/*
*如果此抽象路徑名所表示的文件是一個目錄并且此抽象路徑名所
表示文件或目錄名稱與所輸入的文件名不相同
*/
else if(files[i].isDirectory() && !(files[i].getName().equals(findField.getText())))
{
//將抽象路徑名轉換為一個路徑名字符串并在顯示路徑名文本域中顯示出來
showPathField.setText(files[i].getPath());
//取得該抽象路徑名數組的絕對路徑名字符串
listfile(files[i].getAbsolutePath());
}
/*
*如果此抽象路徑名所表示的文件是一個目錄并且此抽象路徑名所
表示文件或目錄名稱與所輸入的文件名相同
*/
else if(files[i].isDirectory() && (files[i].getName().equals(findField.getText())))
{
//將抽象路徑名轉換為一個路徑名字符串并在顯示路徑名文本域中顯示出來
showPathField.setText(files[i].getPath());
//取得該抽象路徑名數組的絕對路徑名字符串并在文本區中依次顯示
resultArea.append("\n"+files[i].getAbsolutePath());
//取得該抽象路徑名數組的絕對路徑名字符串
listfile(files[i].getAbsolutePath());
}
/*
* 如果此抽象路徑名所表示的文件不是一個目錄或文件并且此抽象路徑名所
表示的文件或目錄名稱與所輸入的文件名相同
*/
else if(!(files[i].isDirectory()) && files[i].getName().equals(findField.getText()))
{
//將抽象路徑名轉換為一個路徑名字符串并在顯示路徑,名文本域中顯示出來
showPathField.setText(files[i].getPath());
//取得該抽象路徑名數組的絕對路徑名字符串并在文本區中依次顯示
resultArea.append("\n"+files[i].getAbsolutePath());
}
else
{
//將抽象路徑名轉換為一個路徑名字符串并在顯示路徑,名文本域中顯示出來
showPathField.setText(files[i].getPath());
//取得該抽象路徑名數組的絕對路徑名字符串
listfile(files[i].getAbsolutePath());
}
}
}
/*
* 使用FilenameFilter接口創建一個用于過濾器文件名的類實例。并使用這些實例過濾
File類的list方法中的目錄清單。(添加創建一個過濾器)
*/
class MyFile implements FilenameFilter
{
/*
* 測試指定文件是否應該包含在某一文件列表中(dir:被找到的文件所在的目錄。
name:文件的名稱。)
*/
public boolean accept(File dir, String name)
{
//初始化該類組件
File file=new File(dir, name);
/*
* 判斷此抽象路徑名表示的文件是否是一個目錄,或者取得由此抽象路徑名
表示的文件或目錄的名稱并判斷用戶所輸入框中的文本是否為后綴名。
*/
return (file.isDirectory() || file.getName().endsWith(findField.getText()));
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -