package com.sichunUniversity.softWare.liujuguang;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.*;public class Dictionary {
public static void main(String[] args) {
MyFrame totalWindow = new MyFrame("word finder");
}
}class MyFrame extends JFrame {
private static final long serialVersionUID = 1L;
int count = 0;//匹配数成员变量
WordMatch wordMatch = new WordMatch();
TextField input ;
TextArea ta;
Label lText;
String fileDictionary = "";//文件目录成员变量
MyFrame(String s) {
super(s); 
setBounds(400, 200, 250, 400);
setBackground(new Color(204, 200, 205));
setVisible(true);
setResizable(true);
// 创建菜单栏
JMenuBar bar = new JMenuBar();
final JMenu file = new JMenu("File");
file.setPopupMenuVisible(true);
//菜单栏打开选项完成
JMenuItem open = new JMenuItem("open");
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser j = new JFileChooser();
int rVal = j.showOpenDialog(MyFrame.this);
if(rVal == JFileChooser.APPROVE_OPTION) {
fileDictionary = j.getSelectedFile().toString();
initializeTa();
}else if(rVal == JFileChooser.CANCEL_OPTION) {
//do nothing
}
file.updateUI();
}
});
//菜单栏退出选项完成
JMenuItem exit = new JMenuItem("exit");
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//wordMatch.close();
System.exit(0);
}
});
file.add(open);
file.add(exit);
bar.add(file);
setJMenuBar(bar);

//创建输入框,clear按键所在panel
Panel pSearch = new Panel(new FlowLayout(FlowLayout.LEFT));

//创建显示区
ta = new TextArea(400,500);
ta.setEditable(false);


//创建添加输入框
input = new TextField("请输入键值",20);

//创建匹配字个数显示label
lText = new Label("共搜索到" + count + "匹配字");

//创建上部panel
Panel pTop = new Panel(new BorderLayout());

//将搜索框和显示label加入上部label
pTop.add(pSearch,BorderLayout.NORTH);
pTop.add(lText,BorderLayout.SOUTH);

//对文本的改变做出响应
input.addTextListener(new TextListener() {
public void textValueChanged(TextEvent te) {
file.updateUI();
if(!fileDictionary.equals("")) {
wordMatch.compareWord();
}
lText.setText("共搜索到" + count + "匹配字");

}
});

//清空默认字符串请输入键值
input.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(input.getText().equals(new String("请输入键值"))) {
input.setText("");
}
}
});
pSearch.add(input);

//创建添加clear按键
Button bClear = new Button("clear");
//添加clear按钮的按键事件响应
bClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
file.updateUI();
input.setText("");
}
});
pSearch.add(bClear);

//添加component
add(pTop,BorderLayout.NORTH);
add(ta,BorderLayout.CENTER);

//添加窗口关闭事件响应
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//wordMatch.close();
System.exit(0);
}
});
}

    //初始化显示区方法
void initializeTa() {
wordMatch.locateFile();
}

class WordMatch {

private FileReader fr = null;
private BufferedReader br = null;
private ArrayList<String> strList = new ArrayList<String>();

//把文件加载到显示区
void locateFile() {

String b = "";
String record = "";
count = 0;

try{
fr = new FileReader(fileDictionary);
br = new BufferedReader(fr);
//将文件加载到ArrayList
while((b = br.readLine()) != null) {
strList.add(b);
record += (b + "\n");
count++;
}
}catch(FileNotFoundException e) {
System.out.println("文件不存在!");
}catch(IOException e) {
e.printStackTrace();
}
lText.setText("共搜索到" + count + "匹配字");
ta.setText(record);
input.setText("");
//关闭IO流
close();
}

//创建比较方法
void compareWord() {
String compare1 = input.getText();
String compare2 = "";
String show = "";
count = 0;

Iterator<String> i = strList.iterator();
while(i.hasNext()) {
if((compare2 = i.next()) != null) {
if(compare1.equals("")) {
count++;
show += (compare2 + "\n");
continue;
}else if(compare2.regionMatches(true, 0, compare1, 0, compare1.length())) {
count++;
show += (compare2 + "\n");
}
}
}

      //显示匹配字
ta.setText(show);
}

//创建IO的关闭方法
void close() {
try{
fr.close();
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}