⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.java

📁 一个功能强大的Java多线程下载器 欢迎大家的光临 促进大家的学习交流 希望对大家有点帮助
💻 JAVA
字号:
package yechen;

import java.io.File;
import java.util.Vector;
import java.awt.event.*;

import java.awt.*;
import javax.swing.*;

import javax.swing.table.*;

public class Search extends JFrame implements ActionListener, Runnable {
	//定义各JLABEL组件
	JLabel labelText;

	JLabel labelLook;

	JLabel labelSearch;

	JLabel labelResult;

	//定义各JTextField 组件.
	JTextField textText;

	JTextField textLook;

	//定义各 JButton 组件
	JButton search;

	JButton search2;

	JButton cancel;

	JButton browse;

	//定义各 JPanel 组件

	JPanel panel;

	JPanel paneLeft;

	JPanel paneRight;

	JPanel pane1;

	JPanel pane2;

	JPanel pane3;

	JPanel pane4;

	//JPanel pane5;

	JPanel p1;

	JPanel p2;

	JPanel p3;

	//	定义 JScrollPane 组件

	JScrollPane scrollpane;

	//定义 String 对象.
	static String strText;

	static String strLook;

	//	定义各 JTable 组件

	JTable table;

	int count = 0;

	int FLAG = 0;

	Vector vRow = new Vector();

	Vector vCol = new Vector();

	public FileList fl = new FileList(this);//定义并初始化两个列出文件的类

	public FileList2 f2 = new FileList2(this);

	//public Help h;

	DefaultTableModel model;

	Thread thread1, thread2;

	int countFile;

	public Search() {
		try {

			//	UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

		} catch (Exception e) {

			usage();//调用出现错误函数
		}

		setSize(800, 600);//窗口大小

		setTitle("文件搜索");//定义窗口名称

		panel = new JPanel();
		/* 设置布局为Grid layout布局*/
		panel.setLayout(new GridLayout(0, 2));
		/*添加天窗口 */
		getContentPane().add(panel);
		/*
		 以下为初始化并添加各组件.
		 并添加了相应面板
		 
		 */
		paneLeft = new JPanel();
		paneRight = new JPanel();
		panel.add(paneLeft);
		panel.add(paneRight);

		paneLeft.setLayout(new BorderLayout());
		//	pane5 = new JPanel();
		//	pane5.setLayout(new FlowLayout(FlowLayout.RIGHT));
		//help = new JButton("Help");
		//help.addActionListener(this);
		//pane5.add(help);
		//paneLeft.add(pane5, BorderLayout.SOUTH);

		pane3 = new JPanel();
		pane3.setLayout(new GridLayout(6, 0));
		paneLeft.add(pane3, BorderLayout.NORTH);

		p1 = new JPanel();
		p1.setLayout(new FlowLayout(FlowLayout.LEFT));
		labelLook = new JLabel("Search for file(s) in:");
		p1.add(labelLook);
		labelLook.setFont(new Font("Verdana", Font.BOLD, 12));
		pane3.add(p1);

		pane1 = new JPanel();
		pane1.setLayout(new FlowLayout(FlowLayout.LEFT));
		textLook = new JTextField(25);
		browse = new JButton("浏览");
		browse.addActionListener(this);
		pane1.add(textLook);
		pane1.add(browse);
		textLook.setFont(new Font("Verdana", Font.PLAIN, 12));
		pane3.add(pane1);

		p2 = new JPanel();
		p2.setLayout(new FlowLayout(FlowLayout.LEFT));
		labelText = new JLabel("Containing text:");
		p2.add(labelText);
		labelText.setFont(new Font("Verdana", Font.BOLD, 12));
		pane3.add(p2);

		p3 = new JPanel();
		p3.setLayout(new FlowLayout(FlowLayout.LEFT));
		textText = new JTextField(33);
		p3.add(textText);
		textText.setFont(new Font("Verdana", Font.PLAIN, 12));
		pane3.add(p3);

		pane2 = new JPanel();
		pane2.setLayout(new FlowLayout(FlowLayout.LEFT));
		search = new JButton("以文件名搜索");
		cancel = new JButton("停止搜索");
		search2 = new JButton("以文件内容搜索");
		pane2.add(search);
		search.addActionListener(this);
		pane2.add(search2);
		search2.addActionListener(this);
		pane2.add(cancel);
		cancel.addActionListener(this);
		pane3.add(pane2);

		pane4 = new JPanel();
		pane4.setLayout(new FlowLayout(FlowLayout.LEFT));
		labelSearch = new JLabel("Search Result(s): ");
		labelSearch.setFont(new Font("Verdana", Font.BOLD, 12));
		labelResult = new JLabel("0 files.");
		labelResult.setFont(new Font("Verdana", Font.BOLD, 12));
		pane4.add(labelSearch);
		pane4.add(labelResult);
		pane3.add(pane4);

		paneRight.setLayout(new BorderLayout());
		model = new DefaultTableModel();
		vCol.addElement("File Name");
		//vCol.addElement("Start Position");
		//vCol.addElement("Path");
		vCol.addElement("Path");
		model = new DefaultTableModel(vRow, vCol);
		table = new JTable(model);
		scrollpane = new JScrollPane(table);
		paneRight.add(scrollpane, BorderLayout.CENTER);
		/* Pack the components of the frame. */
		doLayout();
		pack();

		addWindowListener(new WindowAdapter() { //窗口监听器
			public void windowClosing(WindowEvent we) {
				System.exit(0);
			}
		});
	}

	//实现监听的方法
	public void actionPerformed(ActionEvent ae) {

		//当按下以文件名搜索时执行
		if (ae.getSource() == search) {
			countFile = 0;
			count = 0;
			FLAG = 0;
			model.setNumRows(0);

			search.setEnabled(false);

			strText = textText.getText();
			strLook = textLook.getText();
			//判断是否输入为空
			if (strText.equals("") == false && strLook.equals("") == false) {
				try {
					thread1 = new Thread(this);
					thread1.start();

				} catch (Exception e) {
					System.out.println("Error!" + e);
				}
			}
			//弹出提示窗口
			else {
				JOptionPane.showMessageDialog(this,
						"You must enter the searching text.", "Alert Message",
						JOptionPane.WARNING_MESSAGE);
			}
		}
		//		当按下以文件内容搜索时执行
		else if (ae.getSource() == search2) {
			countFile = 0;
			count = 0;
			FLAG = 0;
			model.setNumRows(0);

			search2.setEnabled(false);

			strText = textText.getText();
			strLook = textLook.getText();
			//判断是否输入为空
			if (strText.equals("") == false && strLook.equals("") == false) {
				try {
					//thread2 = new Thread(this);
					//thread2.start();
					f2.listFiles(strLook);
				} catch (Exception e) {
					System.out.println("Error!" + e);
				}
			}

			else {
				JOptionPane.showMessageDialog(this,
						"You must enter the searching text.", "Alert Message",
						JOptionPane.WARNING_MESSAGE);
			}
		}

		///判断当点击浏览文件时执行
		else if (ae.getSource() == browse) {

			try {
				//初始化一个文件选择框
				JFileChooser jfc = new JFileChooser();

				jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
				jfc.showOpenDialog(this);

				//用 getSelectedFile() 方法取得文件.或文件夹 

				File file = jfc.getSelectedFile();
				//取得文件夹路径
				String str = file.getAbsolutePath();
				textLook.setText(str);
			} catch (Exception e) {
				System.out.println("Error" + e);
			}
		}
		///当按下取消搜索键时执行
		else if (ae.getSource() == cancel) {

			search.setEnabled(true);
			FLAG = 1;//把FLAG设值为1
		}
		//当按下帮助键时执行
		//else if (ae.getSource() == help) {
		/* It shows the help utility. */
		//	h = new Help();
		//	h.show();
		//}
	}

	public void run() {
		fl.listFiles(strLook);
	}

	//主函数
	public static void main(String[] args) {
		Search s = new Search();
		s.show();
	}

	//处理错误的函数方法
	public static void usage() {
		System.err.println("Error");
		System.exit(1);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -