package clientframe;
import java.awt.*;
import java.awt.event.*;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Date;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import entity.ChatInfo;
import entity.ClientInfo;
import entity.Exit;
import entity.ServerMessage;
/**
* 用户登陆成功后,开始进入聊天室进行聊天
* 用户可以和所有在线用户进行聊天,也可以进行点对点的聊天
* @author Administrator
*
*/
public class ChatRoom extends Thread implements ActionListener{
/**
* 定义一个聊天框体
*/
public JFrame chatFrame;
/**
* 面板
*/
public JPanel pnlChat;
/**
* 设置聊天属性下拉框
*/
public JComboBox<Object> daXiaoComboBox;
public JComboBox<Object> yangShiComboBox;
public JComboBox<Object> zitiComboBox;
public JComboBox<Object> emote;
public JComboBox<String> cmbUser;
/**
* 定义按钮
*/
public JButton btClear, btnExit, btnSend, btnClear, btnSave;
/**
* 定义标签
*/
public JLabel lblUserList, lblUserMessage, lblSendMessage, lblChatUser,lblUserTotal, lblCount, lblBack;
/**
* 定义聊天输入文本框
*/
public JTextField txtMessage;
/**
*
*/
public List onlineUserList;
/**
* 定义聊天内容面板
*/
public TextArea UserMessageArea;
/**
* 私聊切换
*/
private JCheckBox checkPrivateChat;
/**
* 定义一个聊天页面的刷新线程
*/
Thread thread;
/**
* 定义头像Lablel
*/
//private JLabel headLabel = new JLabel();
// 用于将窗口用于定位
Dimension scrnsize;
//设置顶层容器的大小或位置
//因为是抽象类,所以不能用new 实例化,可以用getDefaultToolkit返回Toolkit类的对象
Toolkit toolkit = Toolkit.getDefaultToolkit();
public String serverMessage = "";
final JSlider blueSlider = new JSlider();
final JSlider redSlider = new JSlider();
final JSlider greenSlider = new JSlider();
//final JLabel hanziLabel = new JLabel();
ServerMessage messageObj = null;
String ServerIP, UserName;
//************************************************************************************************
//************************************************************************************************
/**
* 构造方法开始
* 实现聊天功能
* @param name
* @param ip
*/
@SuppressWarnings("serial")
public ChatRoom(String userName, String serverIP) {
// Dialog d = new FontDialog();
this.ServerIP = serverIP;
this.UserName = userName;
chatFrame = new JFrame("聊天室" + "[用户:" + UserName + "]");
//面板JPanel里添加背景图片
pnlChat = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponents(g);
ImageIcon img = new ImageIcon("Picture\\regist.jpg");
g.drawImage(img.getImage(), 0, 0, null);
}
};
chatFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
chatFrame.addWindowListener(new Windowclose());
//将面板加入容器中
chatFrame.getContentPane().add(pnlChat);
//pnlChat.setBackground(Color.yellow);
String list[] = { "所有人" };
btClear = new JButton("清屏");
btnExit = new JButton("退出");
btnSend = new JButton("发送");
btnSave = new JButton("保存");
lblUserList = new JLabel("[在线用户列表]");
lblUserMessage = new JLabel("[聊天信息]");
lblSendMessage = new JLabel("[聊天内容]");
lblChatUser = new JLabel("你对");
lblUserTotal = new JLabel("在线人数:");
lblCount = new JLabel("0");
onlineUserList = new List();
txtMessage = new JTextField(170);
cmbUser = new JComboBox<String>(list);
cmbUser.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
//freshHead();
}
});
checkPrivateChat = new JCheckBox("私聊");
// 聊天内容只能向下滚动
UserMessageArea = new TextArea("", 300, 200,
TextArea.SCROLLBARS_VERTICAL_ONLY);
UserMessageArea.setForeground(new Color(0, 0, 0));
//设置聊天信息面板不可写入
UserMessageArea.setEditable(false);
/****************************************************************************
/****************************************************************************
* 以下是该聊天框里各个组件的布局设置,用手动布局setSonuds设置各个组件的相对位置
* 字型style、size的设置
* 背景色的设置setBackGround
*/
pnlChat.setLayout(null);
pnlChat.setBackground(new Color(52, 130, 203));
btnSave.setBounds(500, 330, 80, 25);
btClear.setBounds(500, 300, 80, 25);//
btnExit.setBounds(500, 360, 80, 25);
btnSend.setBounds(400, 335, 80, 25);//
lblUserList.setBounds(5, 0, 120, 40);
lblUserTotal.setBounds(130, 0, 60, 40);
lblCount.setBounds(190, 0, 60, 40);
lblUserMessage.setBounds(225, 0, 180, 40);
lblChatUser.setBounds(10, 297, 40, 30);
lblSendMessage.setBounds(210, 297, 60, 30);
onlineUserList.setBounds(5, 40, 210, 255);
UserMessageArea.setBounds(225, 40, 360, 255);
txtMessage.setBounds(270, 300, 210, 25);
cmbUser.setBounds(50, 300, 80, 25);
checkPrivateChat.setBounds(300, 340, 60, 20);
//设置字体颜色
lblUserList.setForeground(Color.black);
lblUserMessage.setForeground(Color.black);
lblSendMessage.setForeground(Color.black);
lblChatUser.setForeground(Color.black);
lblSendMessage.setForeground(Color.black);
lblUserTotal.setForeground(Color.black);
lblCount.setForeground(Color.black);
cmbUser.setForeground(Color.black);
checkPrivateChat.setForeground(Color.black);
onlineUserList.setBackground(Color.white);
UserMessageArea.setBackground(Color.white);
btClear.setBackground(Color.orange);
btnExit.setBackground(Color.orange);
btnSend.setBackground(Color.orange);
btnSave.setBackground(Color.orange);
pnlChat.setBackground(new Color(60,180,240));
//将各个控件元素添加到面板中
pnlChat.add(btClear);
pnlChat.add(btnExit);
pnlChat.add(btnSend);
pnlChat.add(btnSave);
pnlChat.add(lblUserList);
pnlChat.add(lblUserMessage);
pnlChat.add(lblSendMessage);
pnlChat.add(lblChatUser);
pnlChat.add(lblUserTotal);
pnlChat.add(lblCount);
pnlChat.add(onlineUserList);
pnlChat.add(UserMessageArea);
pnlChat.add(txtMessage);
pnlChat.add(cmbUser);
pnlChat.add(checkPrivateChat);
btClear.addActionListener(this);
btnExit.addActionListener(this);
btnSend.addActionListener(this);
btnSave.addActionListener(this);
onlineUserList.addActionListener(this);
txtMessage.addActionListener(this);
//初始化表情标签
// headLabel.setHorizontalAlignment(SwingConstants.CENTER);
// headLabel.setIcon(new ImageIcon("face//1.JPG"));
// headLabel.setBounds(15, 335, 70, 60);
// pnlChat.add(headLabel);
emote = new JComboBox<Object>();
emote.setModel(new DefaultComboBoxModel<Object>(new String[] { "表情", "微笑",
"惊喜", "嘻嘻", "扮酷", "嘿嘿", "傻笑", "好奇","陶醉","害羞", "生气", "伤心", "大哭","示爱"}));
pnlChat.add(emote);
emote.setBounds(141, 301, 60, 23);
zitiComboBox = new JComboBox<>();
zitiComboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
//freshFont();
}
});
zitiComboBox.setModel(new DefaultComboBoxModel<Object>(new String[] { "宋体",
"黑体","楷体","华文隶书","华文彩云","华文琥珀","华文新魏","正方舒体","正方姚体"}));
pnlChat.add(zitiComboBox);
zitiComboBox.setBounds(79, 337, 80, 23);
yangShiComboBox = new JComboBox<Object>();
yangShiComboBox.setModel(new DefaultComboBoxModel<Object>(new String[] { "正规",
"粗体", "斜体", "粗斜" }));
yangShiComboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
//freshFont();
}
});
pnlChat.add(yangShiComboBox);
yangShiComboBox.setBounds(158, 337, 52, 23);
daXiaoComboBox = new JComboBox<Object>();
daXiaoComboBox.setModel(new DefaultComboBoxModel<Object>(new String[] { "12",
"14", "16", "18", "20" }));
daXiaoComboBox.addItemListener(new ItemListe
没有合适的资源?快使用搜索试试~ 我知道了~
Java+TCP+SQL SERVER2005
共67个文件
class:34个
java:17个
jpg:11个
4星 · 超过85%的资源 需积分: 10 7 下载量 116 浏览量
2013-05-01
17:50:54
上传
评论
收藏 333KB RAR 举报
温馨提示
一个用Java编写的基于TCP的通信软件,功能比较齐全,数据库用的SQL serve2005.有用户登陆,注册功能。服务器可以群发系统消息。用户既可以群发消息,也可以点对点的私聊。
资源推荐
资源详情
资源评论
收起资源包目录
终极版本.rar (67个子文件)
终极版本
Sever
bin
severframe
SeverFrame$4.class 695B
SeverListenThread.class 2KB
SqlConn.class 1KB
SeverFrame$2.class 756B
SeverFrame$3.class 1KB
SeverFrame$6.class 705B
Connection.class 10KB
SeverFrame$5.class 694B
SeverFrame.class 13KB
SeverFrame$1.class 739B
entity
ServerMessage.class 472B
RegistUserInfo.class 480B
ClientInfo.class 424B
ChatInfo.class 479B
Exit.class 383B
src
severframe
SqlConn.java 2KB
SeverFrame.java 16KB
SeverListenThread.java 2KB
Connection.java 12KB
entity
Exit.java 243B
RegistUserInfo.java 442B
ServerMessage.java 449B
ChatInfo.java 481B
ClientInfo.java 300B
.project 381B
.classpath 397B
Picture
ServerBac.jpg 48KB
Client
bin
clientframe
UserRegist$1.class 939B
ChatRoom.class 13KB
UserLogin$1.class 933B
ChatRoom$7.class 698B
ChatRoom$2.class 687B
ChatRoom$5.class 687B
UserRegist.class 7KB
ChatRoom$3.class 687B
ChatRoom$Windowclose.class 645B
ChatRoom$8.class 698B
ChatRoom$6.class 698B
ChatRoom$1.class 970B
ChatRoom$4.class 687B
UserLogin.class 6KB
Background.jpg 19KB
registerlogo.jpg 9KB
Regist.jpg 68KB
greenW.jpg 9KB
entity
ServerMessage.class 472B
RegistUserInfo.class 480B
ClientInfo.class 424B
ChatInfo.class 479B
Exit.class 383B
qie.jpg 4KB
.settings
org.eclipse.jdt.core.prefs 598B
src
clientframe
UserLogin.java 6KB
ChatRoom.java 19KB
UserRegist.java 8KB
entity
Exit.java 243B
RegistUserInfo.java 443B
ServerMessage.java 456B
ChatInfo.java 467B
ClientInfo.java 301B
.project 382B
Expression
.classpath 428B
Picture
Background.jpg 19KB
registerlogo.jpg 9KB
Regist.jpg 68KB
greenW.jpg 9KB
qie.jpg 4KB
共 67 条
- 1
资源评论
- huangwenchuan2014-05-28资料题材不错,内容一般,可以参考下。
- bailiju2014-03-25资料题材不错,内容一般,可以参考下。
七哲
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 使用 C 语言实现的计算非负整数的阶乘
- 2011-2021最新版本北京大学数字普惠金融指数(PKU-DFIIC).xlsx
- 县域数字乡村指数2018-2020(1).xlsx
- Docker容器配置进阶
- tensorflow-gpu-2.7.4-cp37-cp37m-manylinux2010-x86-64.whl
- 多段线、 圆、弧转多段线(仅我可见)
- tensorflow-2.7.2-cp38-cp38-manylinux2010-x86-64.whl
- 李慧琴C语言基础部分.zip
- yeyue-p8Yi4-ve4a83792.apk
- tensorflow-gpu-2.7.3-cp38-cp38-manylinux2010-x86-64.whl
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功