java网络编程课程设计聊天室Word文件下载.docx
- 文档编号:16505482
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:60
- 大小:186.55KB
java网络编程课程设计聊天室Word文件下载.docx
《java网络编程课程设计聊天室Word文件下载.docx》由会员分享,可在线阅读,更多相关《java网络编程课程设计聊天室Word文件下载.docx(60页珍藏版)》请在冰豆网上搜索。
而且,Java很小,不需要占用多大内存。
因此运用JAVA程序编写聊天室,实现简单聊天功能。
本次课程设计做的是Java简单聊天室,它是图形界面、线程、流与文件等技术的综合应用。
程序实现了聊天室的基本功能,其流程有:
////实现网络的连接,为聊天室网络
的建立做准备。
////编辑个人信息,设置网络端口等
////为用户聊天提供平台
///续下
///续上
////客户退出聊天室
////断开与网络的连接,彻底推出聊天室
2.需求分析:
在当今的信息时代,越来越多的聊天工具被应用,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。
为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。
(1)客户端能够登陆
(2)实现一对一、多对多聊天
(3)可以显示其他用户的当前状态
3.详细设计:
3.1.1、ChatClient.java:
packageliaotian;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
import.*;
/*
*聊天客户端的主框架类
*/
publicclassChatClientextendsJFrameimplementsActionListener{
/**
*
privatestaticfinallongserialVersionUID=1L;
Stringip="
127.0.0.1"
;
//连接到服务端的ip地址
intport=8888;
//连接到服务端的端口号
StringuserName="
匆匆过客"
//用户名
inttype=0;
//0表示未连接,1表示已连接
JComboBoxcombobox;
//选择发送消息的接受者
JTextAreamessageShow;
//客户端的信息显示
JScrollPanemessageScrollPane;
//信息显示的滚动条
JLabelexpress,sendToLabel,messageLabel;
JTextFieldclientMessage;
//客户端消息的发送
JButtonclientMessageButton;
//发送消息
JTextFieldshowStatus;
//显示用户连接状态
Socketsocket;
ObjectOutputStreamoutput;
//网络套接字输出流
ObjectInputStreaminput;
//网络套接字输入流
ClientReceiverecvThread;
//建立菜单栏
JMenuBarjMenuBar=newJMenuBar();
//建立菜单组
JMenuoperateMenu=newJMenu("
操作(O)"
);
//建立菜单项
JMenuItemloginItem=newJMenuItem("
用户登录(I)"
newImageIcon("
face/98.gif"
));
JMenuItemlogoffItem=newJMenuItem("
用户注销(L)"
face/icon.gif"
JMenuItemexitItem=newJMenuItem("
退出(X)"
face/smile.gif"
JMenuconMenu=newJMenu("
设置(C)"
JMenuItemuserItem=newJMenuItem("
用户设置(U)"
face/messenger_big.gif"
JMenuItemconnectItem=newJMenuItem("
连接设置(C)"
face/Uabrand.gif"
JMenuhelpMenu=newJMenu("
帮助(H)"
JMenuItemhelpItem=newJMenuItem("
face/HelpCenter.gif"
//建立工具栏
JToolBartoolBar=newJToolBar();
//建立工具栏中的按钮组件
JButtonloginButton;
//用户登录
JButtonlogoffButton;
//用户注销
JButtonuserButton;
//用户信息的设置
JButtonconnectButton;
//连接设置
JButtonexitButton;
//退出按钮
//框架的大小
DimensionfaceSize=newDimension(400,400);
JPaneldownPanel;
GridBagLayoutgirdBag;
GridBagConstraintsgirdBagCon;
publicChatClient(){
init();
//初始化程序
//添加框架的关闭事件处理
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
//设置框架的大小
this.setSize(faceSize);
this.setVisible(true);
setIconImage(getToolkit().getImage("
face/love.gif"
//设置运行时窗口的位置
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int)(screenSize.width-faceSize.getWidth())/2,
(int)(screenSize.height-faceSize.getHeight())/2);
this.setResizable(false);
this.setTitle("
聊天室客户端"
//设置标题
//为操作菜单栏设置热键'
V'
operateMenu.setMnemonic('
O'
//为用户登录设置快捷键为ctrl+i
loginItem.setMnemonic('
I'
loginItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK));
//为用户注销快捷键为ctrl+l
logoffItem.setMnemonic('
L'
logoffItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK));
//为退出快捷键为ctrl+x
exitItem.setMnemonic('
X'
exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
//为设置菜单栏设置热键'
C'
conMenu.setMnemonic('
//为用户设置设置快捷键为ctrl+u
userItem.setMnemonic('
U'
userItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
//为连接设置设置快捷键为ctrl+c
connectItem.setMnemonic('
connectItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
//为帮助菜单栏设置热键'
H'
helpMenu.setMnemonic('
//为帮助设置快捷键为ctrl+p
helpItem.setMnemonic('
helpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
}
*程序初始化函数
*/
publicvoidinit(){
ContainercontentPane=getContentPane();
contentPane.setLayout(newBorderLayout());
//添加菜单栏
operateMenu.add(loginItem);
operateMenu.add(logoffItem);
operateMenu.addSeparator();
operateMenu.add(exitItem);
jMenuBar.add(operateMenu);
conMenu.add(userItem);
conMenu.addSeparator();
conMenu.add(connectItem);
jMenuBar.add(conMenu);
helpMenu.add(helpItem);
jMenuBar.add(helpMenu);
setJMenuBar(jMenuBar);
//初始化按钮
loginButton=newJButton("
登录"
logoffButton=newJButton("
注销"
userButton=newJButton("
用户设置"
);
connectButton=newJButton("
连接设置"
exitButton=newJButton("
退出"
//当鼠标放上显示信息
loginButton.setToolTipText("
连接到指定的服务器"
logoffButton.setToolTipText("
与服务器断开连接"
userButton.setToolTipText("
设置用户信息"
connectButton.setToolTipText("
设置所要连接到的服务器信息"
//将按钮添加到工具栏
toolBar.add(userButton);
toolBar.add(connectButton);
toolBar.addSeparator();
//添加分隔栏
toolBar.add(loginButton);
toolBar.add(logoffButton);
toolBar.add(exitButton);
contentPane.add(toolBar,BorderLayout.NORTH);
//初始时
loginButton.setEnabled(true);
logoffButton.setEnabled(false);
//为菜单栏添加事件监听
loginItem.addActionListener(this);
logoffItem.addActionListener(this);
exitItem.addActionListener(this);
userItem.addActionListener(this);
connectItem.addActionListener(this);
helpItem.addActionListener(this);
//添加按钮的事件侦听
loginButton.addActionListener(this);
logoffButton.addActionListener(this);
userButton.addActionListener(this);
connectButton.addActionListener(this);
exitButton.addActionListener(this);
combobox=newJComboBox();
combobox.insertItemAt("
所有人"
0);
combobox.setSelectedIndex(0);
messageShow=newJTextArea();
messageShow.setEditable(false);
//添加滚动条
messageScrollPane=newJScrollPane(messageShow,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
messageScrollPane.setPreferredSize(newDimension(400,400));
messageScrollPane.revalidate();
clientMessage=newJTextField(23);
clientMessage.setEnabled(false);
clientMessageButton=newJButton();
clientMessageButton.setText("
发送"
//添加系统消息的事件侦听
clientMessage.addActionListener(this);
clientMessageButton.addActionListener(this);
sendToLabel=newJLabel("
发送至:
"
messageLabel=newJLabel("
发送消息:
downPanel=newJPanel();
girdBag=newGridBagLayout();
downPanel.setLayout(girdBag);
girdBagCon=newGridBagConstraints();
girdBagCon.gridx=0;
girdBagCon.gridy=0;
girdBagCon.gridwidth=5;
girdBagCon.gridheight=2;
girdBagCon.ipadx=5;
girdBagCon.ipady=5;
JLabelnone=newJLabel("
"
girdBag.setConstraints(none,girdBagCon);
downPanel.add(none);
girdBagCon.gridy=2;
girdBagCon.insets=newInsets(1,0,0,0);
//girdBagCon.ipadx=5;
//girdBagCon.ipady=5;
girdBag.setConstraints(sendToLabel,girdBagCon);
downPanel.add(sendToLabel);
girdBagCon.gridx=1;
girdBagCon.anchor=GridBagConstraints.LINE_START;
girdBag.setConstraints(combobox,girdBagCon);
downPanel.add(combobox);
girdBagCon.gridx=2;
girdBagCon.anchor=GridBagConstraints.LINE_END;
girdBagCon.gridx=3;
//girdBagCon.insets=newInsets(1,0,0,0);
girdBagCon.gridx=4;
girdBagCon.gridy=3;
girdBag.setConstraints(messageLabel,girdBagCon);
downPanel.add(messageLabel);
girdBagCon.gridx=1;
girdBagCon.gridwidth=3;
girdBagCon.gridheight=1;
girdBag.setConstraints(clientMessage,girdBagCon);
downPanel.add(clientMessage);
girdBag.setConstraints(clientMessageButton,girdBagCon);
downPanel.add(clientMessageButton);
showStatus=newJTextField(35);
showStatus.setEditable(false);
girdBagCon.gridy=5;
girdBag.setConstraints(showStatus,girdBagCon);
downPanel.add(showStatus);
contentPane.add(messageScrollPane,BorderLayout.CENTER);
contentPane.add(downPanel,BorderLayout.SOUTH);
//关闭程序时的操作
this.addWindowListener(
newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
if(type==1){
DisConnect();
}
System.exit(0);
}
});
*事件处理
publicvoidactionPerformed(ActionEvente){
Objectobj=e.getSource();
if(o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 网络 编程 课程设计 聊天室