package client;
import java.net.*;
import java.io.*;
import java.awt.*;
import javax.swing.*;
public class client implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param argsjava.io.Serializable
*/
// 创建界面
JFrame f1; // 父容器
Panel p1; // 放置最上边的panel
Panel p2; // 放置最下边的panel
JTextField JtUser; // 用户登陆
Button BtLogin; // 用户登陆按钮
TextArea TaCharNote; // 显示聊天内容
TextArea LsUserNameList; // 显示用户
JTextField JtSendCharNote; // 发送聊天内容
Button BtSend; // 发送按钮
Button BtSave; //保存按钮
FileDialog file; //文件对话框
client() {
createGui();
connectionServer();
}
private void createGui() {
f1 = new JFrame("聊天室");
p1 = new Panel();
p2 = new Panel();
JtUser = new JTextField(10);
BtLogin = new Button("登陆");
BtLogin.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
// TODO Auto-generated Event stub
// actionPerformed()
JtUser.setEditable(false);
BtLogin.setEnabled(false);
p2.setEnabled(true);
LoginUser(JtUser.getText());
}
});
TaCharNote = new TextArea();
LsUserNameList = new TextArea(20,20);
JtSendCharNote = new JTextField(30);
BtSend = new Button("发送");
BtSend.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
// System.out.println("登陆"); // TODO Auto-generated Event stub
sendChat();
// actionPerformed()
}
});
BtSave = new Button("保存");
BtSave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
file = new FileDialog(f1,"new");
file.setMode(1);
file.setVisible(true);
String path=file.getDirectory();
String Strfile=file.getFile();
System.out.println(path+Strfile);
String Files=path+Strfile;
try{
File ff = new File(Files);
//JtSendCharNote.selectAll();
TaCharNote.setEditable(true);
String s=TaCharNote.getText();
TaCharNote.setEditable(false);
PrintStream rf= new PrintStream (new FileOutputStream(ff,true));
rf.print(s);
rf.flush();
rf.close();
}catch(Exception ex){
System.out.println("Save"+ex.toString());
}
}
});
p1.add(JtUser);
p1.add(BtLogin);
p1.setLayout(new FlowLayout());
p2.add(JtSendCharNote);
p2.add(BtSend);
p2.add(BtSave);
f1.setLayout(new BorderLayout());
f1.add("North", p1);
f1.add("East", LsUserNameList);
LsUserNameList.setEditable(false);
f1.add("Center", TaCharNote);
TaCharNote.setEditable(false);
f1.add("South", p2);
p2.setEnabled(false);
f1.setSize(new Dimension(500, 500));
f1.setVisible(true);
}
Socket soc = null;
ObjectOutputStream out; // 与服务器通信的对象流
ObjectInputStream in;// 与服务器通信的对象流
// 连接服务器
private boolean connectionServer() {
try {
soc = new Socket("127.0.0.1", 8153);
out = new ObjectOutputStream(new BufferedOutputStream(soc
.getOutputStream()));
in = new ObjectInputStream(new BufferedInputStream(soc
.getInputStream()));
LessServer ls = new LessServer();
ls.start();
} catch (Exception e) {
System.out.println("connectionServer"+e.toString());
}
return true;
}
// 用户登陆
private boolean LoginUser(String name) {
try {
if (name != null) {
vo.clientObjectVO vo = new vo.clientObjectVO();
vo.setMake("login");
vo.setUserName(name);
out.writeObject(vo);
// out.close();
out.flush();
}
} catch (Exception e) {
System.out.println(e.toString());
}
return true;
}
// 列出所有登陆的用户
private void listUser(String listUser) {
LsUserNameList.setText(listUser);
}
// 发送信息
private void sendChat() {
try {
vo.clientObjectVO co = new vo.clientObjectVO();
co.setMake("chat");
co.setChatNote(JtSendCharNote.getText());
out.writeObject(co);
out.flush();
} catch (Exception e) {
System.out.println("sendChat :" + e.toString());
}
}
// 更新聊天内容
private String acceptChat(String chatNote) {
TaCharNote.append(chatNote + "\r\n");
return chatNote;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new client();
}
private class LessServer extends Thread {
public void run() {
String str1=JtUser.getText();
System.out.println(str1);
vo.serverObjectVO svo = new vo.serverObjectVO();
try {
while ((svo = (vo.serverObjectVO) in.readObject()) != null) {
if (svo.getMake().equals("chat")) {
String str = svo.getClienName() + "说:"
+ svo.getChatNote();
acceptChat(str);
} else {
if (svo.getMake().equals("login")) {
String str = "客户:" + svo.getClienName() + "登陆";
acceptChat(str);
listUser(svo.getTeststr());
}
}
}
} catch (Exception e) {
System.out.println("LessServer:" + e.toString());
}
}
}
}