JAVA局域网聊天系统源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这是我自己做的简单聊天系统客户端
package LiaoTianSys;
import java.awt.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import .Socket;
import .UnknownHostException;
public class ConversationFrame extends JFrame {
JScrollPane jsp;
JTextField jtf;
static JTextArea jta;
//JTextArea jat1,jta2;
JButton enter=new JButton("发送");
JButton jb=new JButton("聊天室好友");
JButton jb2=new JButton("进入聊天室");
JButton jb3=new JButton("刷新在线人员列表");
JPanel jp,jp1,jp3,jp4;
DefaultListModel listmodel = new DefaultListModel();
//static String[] NAME=new String[10];
String n[]={"f"};
JList list=new JList(listmodel);
JLabel time=new JLabel("当前系统时间:");
JLabel showtime=new JLabel("显示时间");
JLabel jl=new JLabel("输聊天信息");
JLabel nicheng=new JLabel("昵称");
JTextField NCshuru=new JTextField(10);
static DataOutputStream dos;
static DataInputStream dis;
//final LoginFrame lf;
Socket socket;
public ConversationFrame()
{
Container con=getContentPane();
con.setLayout(new BorderLayout());
jp=new JPanel();
setSize(700,600);
setLocation(100,100);
jta=new JTextArea();
jta.setEditable(false);
jsp=new JScrollPane(jta);
con.add(jsp,BorderLayout.CENTER);
jtf=new JTextField(20);
jp.add(jl);
jp.add(jtf);
jp.add(enter);
con.add(jp,BorderLayout.SOUTH);
jp1=new JPanel(new BorderLayout());
JScrollPane jsp1=new JScrollPane(list);
jp1.add(jsp1,BorderLayout.CENTER);
jp1.add(jb,BorderLayout.NORTH);
con.add(jp1,BorderLayout.EAST);
//pack();
jp3=new JPanel();
jp3.add(nicheng);
jp3.add(NCshuru);
jp3.add(jb2);
con.add(jp3,BorderLayout.NORTH);
jp4=new JPanel(new GridLayout(10,1));
jp4.add(jb3);
jp4.add(time);
jp4.add(showtime);
new getTime(this).start();
con.add(jp4,BorderLayout.WEST);
setVisible(true);
// 发送信息给所有人
enter.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String info=jtf.getText();
try {
dos.writeUTF(NCshuru.getText()+" 对所有人说:"+info);
dos.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
//进入聊天室时将自己的昵称发给服务器,首先去验证是否会与已有的人同名,本聊天室是不支持同昵称聊天
jb2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String msg=NCshuru.getText().toString();//得到昵称
if(msg.length()==0)
{
JOptionPane.showMessageDialog(null, "昵称不应该为空,", "温馨提示", RMA TION_MESSAGE);
}
{
try{
dos.writeUTF("name"+msg);
dos.flush();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
}
});
//向服务器请求更新在线人员列表
jb3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try {
listmodel.removeAllElements();//请求之前删除JList对象中的所有内容
dos.writeUTF("请求更新在线人员列表");
dos.flush();
} catch (IOException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
System.out.println(e1.getMessage());