import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.omg.CORBA.portable.InputStream;
/**
* 监听器
* 主函数入口
* @author :李晓君
*
*/
public class Listener implements ActionListener{
private DES des = new DES("65496");
// des.setKey("567");
Client c = new Client();
/**
* 主函数入口处
* @param args
*/
public static void main(String[] args){
new Listener();
//DES des = new DES();
// 设置密钥
// String str1 = "haha";
//DES加密
// String str2 = des.getEncString(str1);
// String deStr = des.getDesString(str2);
//System.out.println("密文:" + str2);
//DES解密
//System.out.println("明文:" + deStr);
}
public Listener()
{
c.getbubble().addActionListener(this);
c.getquick().addActionListener(this);
c.getRead().addActionListener(this);
c.getSave().addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
byte[] t = c.getsource().getText().getBytes();//得到排序内容
//byte[] q = c.getsource().getText().getBytes();
//Byte[]
//Collections.addAll(list,t);
/**
* 加密
*/
if(e.getSource().equals(c.getbubble())){
if("".equals(c.getsource().getText())){
JOptionPane.showMessageDialog(null,"没有可以加密的字符串!");
c.getresult().setText("");
}else{
byte[] encode=des.getEncCode(t);
}
}
/**
* 解密
*/
if(e.getSource().equals(c.getquick())){
if("".equals(c.getsource().getText())){
JOptionPane.showMessageDialog(null,"没有可以加密的字符串!");
c.getresult().setText("");
}else{
byte[] encode=des.getDesCode(t);
c.getresult().setText(""+encode);
}
}
/**
* 读取文件,读取文件类型为.txt
* fileChooser:文件选择器
* filter:文件过滤器
*/
if(e.getSource().equals(c.getRead())){
JFileChooser fileChooser = new JFileChooser();
String readFormats[] = ImageIO.getReaderFormatNames();
//BufferedImage bi = ImageIO.read(f);
//FileNameExtensionFilter filter = new FileNameExtensionFilter("文本文件(.JPG)","JPG");
//fileChooser.setFileFilter((javax.swing.filechooser.FileFilter) filter);
int i = fileChooser.showOpenDialog(getContentPane());//打开文件选择对话框
if(i == JFileChooser.APPROVE_OPTION){//当按下打开按钮时读取文件中的文件
//File selectedFile = fileChooser.getSelectedFile();
c.getname().setText(fileChooser.getSelectedFile().getPath());//得到文件路径
//File file = new File(selectedFile.getAbsolutePath());
String extensionName = getExtensionName(c.getname().getText());//获取文件后缀名
//if ("txt".equals(extensionName)) {
String text = readTxt(c.getname().getText());
c.getsource().setText(text);
//}
//else{
// JOptionPane.showMessageDialog(null, "请选择txt格式的文件!");
//}
}
}
/**
* 储存排序后的字符串
* 若无排序结果则会有相应提示
*/
int len = c.getresult().getText().length();//获取排序结果中的值的长度
if(len==0&&e.getSource().equals(c.getSave())){
JOptionPane.showMessageDialog(null,"请先进行排序再储存!");
}
else{
if(e.getSource().equals(c.getSave())){
//FileNameExtensionFilter filter=new FileNameExtensionFilter("*.txt","JPG");
JFileChooser fileChooser = new JFileChooser();
//fileChooser.showSaveDialog(null);
//fileChooser.setFileFilter(filter);
//fileChooser.setMultiSelectionEnabled(false);
int i=fileChooser.showSaveDialog(null);
if(i == JFileChooser.APPROVE_OPTION){
File file=fileChooser.getSelectedFile();
if (!file.getPath().endsWith(".jpg")) {
file=new File(file.getPath()+".jpg");
}
FileOutputStream fos=null;
try {
if (!file.exists()) {//文件不存在 则创建一个
file.createNewFile();
}
else{
fos=new FileOutputStream(file);
String contend = c.getresult().getText().substring(0,len);
fos.write(contend.getBytes());
fos.flush();
JOptionPane.showMessageDialog(null,"存储成功!");
}
}catch (IOException e1) {
System.err.println("文件创建失败:");
e1.printStackTrace();
}
}
}
}
}
private Component getContentPane() {
// TODO Auto-generated method stub
return null;
}
/**
* 判断字符串中是否为合法字符
* @param str
* @return
*/
boolean isLetter(String str){
return str.matches("^[A-Za-z]+$");
}
boolean isNum(String str){
return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");
}
/**
* 获取文件名
* @param filename
* @return
*/
private String getExtensionName(String filename) {
if ((filename != null) && (filename.length() > 0)) {
int dot = filename.lastIndexOf('.');
if ((dot > -1) && (dot < (filename.length() - 1))) {
return filename.substring(dot + 1);
}
}
return filename;
}
/**
* 读取文件操作
*/
private String readTxt(String path) {
if (path == null || "".equals(path)) {
return "";
}
StringBuffer sb = new StringBuffer();
File file = new File(path);
InputStreamReader read = null;
BufferedReader reader = null;
try {
//BufferedImage bi = ImageIO.read(file);
read = new InputStreamReader(new FileInputStream(file), "gb2312");//字节流转变为字符流
reader = new BufferedReader(read);//读入缓存中
// BufferedImage bi = ImageIO.read(file);
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
//bi.append(line);
}
//while ((line = bi.readLine())!=null){
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (read != null) {
try {
read.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
}