package NewQQ;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
class SingleFrame {
String name;
String me;
JFrame jframe;
TextArea jtextarea;
JTextField jtextfield;
JButton jbutton;
JButton jbuttonrecv;
JButton jbuttonrefuse;
JPanel jpanel;
ObjectOutputStream oos;
HashMap user;
String file;
String savefile;
JFileChooser chooser = new JFileChooser();
public SingleFrame(String name,ObjectOutputStream oos,HashMap user,String me){
this.name = name;
this.oos = oos;
this.user = user;
this.me = me;
}
public void init(){
jframe = new JFrame("与 "+name+" 聊天中");
jframe.setSize(400,300);
jpanel = new JPanel();
jtextarea = new TextArea();
jtextfield = new JTextField(10);
jpanel.add(jtextfield);
jtextarea.setEditable(false);
jtextarea.setFocusable(false);
jbutton = new JButton("传文件");
jbuttonrecv = new JButton("接文件");
jbuttonrefuse = new JButton("取消接收");
jbuttonrecv.setEnabled(false);
jbuttonrefuse.setEnabled(false);
jpanel.add(jbutton);
jpanel.add(jbuttonrecv);
jpanel.add(jbuttonrefuse);
class BuLi implements ActionListener{
public void actionPerformed(ActionEvent arg0){
try {
if(chooser.showOpenDialog(new JTextField())==JFileChooser.APPROVE_OPTION){
file = chooser.getSelectedFile().getAbsolutePath();
String filename = file;
QQMessage sendself = new QQMessage();
sendself.setType(12);
sendself.setSender(me);
sendself.setRecver(me);
sendself.setFilename(file);
oos.writeObject(sendself);
oos.flush();
jtextarea.append("即将发送文件:"+filename+"\n");
jtextarea.append("等待对方接收或者关闭窗口取消"+"\n");
StringTokenizer st = new StringTokenizer(filename,"/");
while(st.hasMoreTokens()){filename = st.nextToken();}
QQMessage filemsg = new QQMessage();
filemsg.setType(5);
filemsg.setSender(me);
filemsg.setRecver(name);
filemsg.setFilename(filename);
oos.writeObject(filemsg);
oos.flush();
}
} catch (Exception e) {}
}
}
class QQButtonListener implements ActionListener{
public void actionPerformed(ActionEvent arg0){
try {
JButton jb = (JButton)arg0.getSource();
QQMessage filemessage = new QQMessage();
filemessage.setSender(me);
filemessage.setRecver(name);
if(jb.getText().equals("接文件")){
if(chooser.showSaveDialog(new JTextField())==JFileChooser.APPROVE_OPTION){
savefile = chooser.getSelectedFile().getAbsolutePath();
filemessage.setType(10);
}
else
filemessage.setType(11);
}
else{
filemessage.setType(11);
}
oos.writeObject(filemessage);
oos.flush();
QQMessage sendself = new QQMessage();
sendself.setType(13);
sendself.setSender(me);
sendself.setRecver(me);
sendself.setFilename(savefile);
oos.writeObject(sendself);
oos.flush();
jbuttonrefuse.setEnabled(false);
jbuttonrecv.setEnabled(false);
} catch (IOException e) {}
}
}
QQButtonListener bbl = new QQButtonListener();
jbuttonrecv.addActionListener(bbl);
jbuttonrefuse.addActionListener(bbl);
jbutton.addActionListener(new BuLi());
class MyAL implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
try {
String com = jtextfield.getText();
jtextarea.append("我对");
jtextarea.append(name);
jtextarea.append("说:\n");
jtextarea.append(com);
jtextarea.append("\n\n");
QQMessage mess = new QQMessage();
mess.setType(4);
mess.setSender(me);
mess.setRecver(name);
mess.setMessage(com);
oos.writeObject(mess);
oos.flush();
jtextfield.setText("");
} catch (IOException e) {}
}
}
jtextfield.addActionListener(new MyAL());
jframe.add(jpanel,BorderLayout.SOUTH);
jframe.add(jtextarea);
class TClientWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
user.remove(name);
file = null;
}
}
jframe.addWindowListener(new TClientWindowListener());
jframe.setVisible(true);
}
}