JAVA大作业.docx

上传人:b****8 文档编号:11033961 上传时间:2023-02-24 格式:DOCX 页数:20 大小:84.67KB
下载 相关 举报
JAVA大作业.docx_第1页
第1页 / 共20页
JAVA大作业.docx_第2页
第2页 / 共20页
JAVA大作业.docx_第3页
第3页 / 共20页
JAVA大作业.docx_第4页
第4页 / 共20页
JAVA大作业.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

JAVA大作业.docx

《JAVA大作业.docx》由会员分享,可在线阅读,更多相关《JAVA大作业.docx(20页珍藏版)》请在冰豆网上搜索。

JAVA大作业.docx

JAVA大作业

商务学院

课程论文

题目:

JAVA期末大作业

姓 名:

王姗

学 号:

2007030331205

学院:

商务学院

专业:

信息管理与信息系统

指导教师:

沈桂兰

2010年12月7日

 

JAVA期末大作业

一、系统的功能介绍

本系统是一个聊天室系统分为服务端与客户端,服务端有发送和退出功能,客户端有连接、发送、退出功能,客户端可以通过连接与服务端连接上,向服务端发送数据,服务端可以通过客户端的连接,接受客户端发送的数据,也可以向客户端发送数据。

且本系统与数据库进行连接,数据库记载了聊天记录和所有登录用户端信息。

二、界面的设计截图

(一)服务器

(二)客户端

三、核心代码说明

(一)ClientWindow的代码

packagews;

importjava.awt.*;

importjavax.swing.*;

importjava.io.*;

import.*;

publicclassClientWindowextendsThread

{

staticClientFramemyWindow=newClientFrame("聊天室:

客户");

publicstaticvoidmain(Stringargs[])

{

myWindow.setBounds(50,100,400,300);

myWindow.setVisible(true);

Threadreceiver=newServerWindow();

receiver.setDaemon(true);//后台程序

receiver.start();//创建并启动接收线程

}

publicvoidrun()//接收信息线程

{

booleandone=true;

while(done)

{

//接收信息

//如不为空,则在输出文本区显示

//否则,done=false;

try

{

Stringstr=myWindow.in.readLine();//接收服务器信息

if(str!

=null)

myWindow.showText("服务器:

"+str);

}

catch(IOExceptione)

{

System.out.println("连接断开!

");

done=false;

}

}

}

}

(二)ClientFrame的代码

packagews;

importjava.awt.*;

importjavax.swing.*;

importjava.awt.event.*;

importjava.io.*;

import.*;

importjavax.swing.border.*;

publicclassClientFrameextendsJFrame//创建JFrame的子类

{

publicSocketsocket=null;//连接时获取的socket放在这里

publicBufferedReaderin=null;//从这里读入数据

publicPrintWriterout=null;//从这里输出数据

publicbooleanconnectFlag=false;//当建立连接时,该标志为true

privateContainercontent=getContentPane();

privateJTextAreatext=newJTextArea(30,100);//生成输出文本组件

privateJTextAreakeyIn=newJTextArea(30,100);//生成输入文本组件

publicstaticfinalintCONNECT=001;//按钮标示号

publicstaticfinalintSEND=002;

publicstaticfinalintQUIT=003;

publicClientFrame(Stringtitle)//构造方法

{

super(title);//调用JFrame的构造方法

setDefaultCloseOperation(EXIT_ON_CLOSE);

Boxroom=Box.createVerticalBox();//创建聊天室

text.setEditable(false);

text.setLineWrap(true);

JScrollPanescrollText=newJScrollPane(text);//加滚动条

scrollText.setAutoscrolls(true);

scrollText.setPreferredSize(newDimension(400,1000));

room.add(scrollText);

keyIn.setLineWrap(true);

JScrollPanescrollKey=newJScrollPane(keyIn);//加滚动条

scrollKey.setAutoscrolls(true);

room.add(scrollKey);

JPanelcontrol=newJPanel();//创建控制面板

Dimensionsize=newDimension(80,20);

Borderborder=BorderFactory.createRaisedBevelBorder();

JButtonconnect=newJButton("连接");

JButtonsend=newJButton("发送");

JButtonquit=newJButton("退出");

connect.setBorder(border);

send.setBorder(border);

quit.setBorder(border);

connect.setPreferredSize(size);

send.setPreferredSize(size);

quit.setPreferredSize(size);

connect.addActionListener(newControlAction(CONNECT));

send.addActionListener(newControlAction(SEND));

quit.addActionListener(newControlAction(QUIT));

control.add(connect);

control.add(send);

control.add(quit);

room.add(control);

content.add(room,BorderLayout.CENTER);

}

publicvoidshowText(Stringstr)//在输出文本区显示文本

{

text.append(str+"\n");

}

classControlActionimplementsActionListener//按钮事件处理

{

intcontrolType=CONNECT;

publicControlAction(inttype)

{

controlType=type;

}

publicvoidactionPerformed(ActionEvente)

{

switch(controlType)

{

caseCONNECT:

//按了连接键

if(!

connectFlag)

{

try{

socket=newSocket("192.168.1.85",8189);//与服务器建立连接

connectFlag=true;

in=

newBufferedReader(

newInputStreamReader(socket.getInputStream()));//输入数据流//创建并启动接收线程

out=

newPrintWriter(socket.getOutputStream(),true);//输出数据流

//booleandone=true;

}

catch(IOExceptionie)

{

System.out.println("连接断开!

");

connectFlag=true;

}

}

break;

caseSEND:

//按了发送键

if(connectFlag)

{

StringkeyText=keyIn.getText();

//在输出文本区显示输入的文本

showText("客户:

"+keyText);//发送键入的文本

keyIn.setText("");

out.println(keyText);//将输入文本发送给服务器

}

break;

caseQUIT:

//按了退出键

connectFlag=false;

try

{

out.println("QUIT");

out.close();

in.close();

System.exit

(1);

socket.close();

}

catch(IOExceptionioe)

{

}

}

}

}

}

(三)ServerWindow的代码

packagews;

importjava.awt.*;

importjavax.swing.*;

importjava.io.*;

import.*;

publicclassServerWindowextendsThread

{

publicstaticServerFramemyWindow=newServerFrame("聊天室:

服务器");

publicstaticServerSocketserverSocket=null;

publicstaticvoidmain(Stringargs[])

{

myWindow.setBounds(500,100,400,300);

myWindow.setVisible(true);

myWindow.showText("等待连接....");

try

{

ServerSocketserverSocket=newServerSocket(8189);//建立服务器socket,port=8189

Socketincoming=serverSocket.accept();//等待客户建立连接

myWindow.connectFlag=true;

myWindow.in=

newBufferedReader(

newInputStreamReader(incoming.getInputStream()));//输入数据流

myWindow.out=

newPrintWriter(incoming.getOutputStream(),true);//输出数据流*/

myWindow.showText("连接建立!

");

myWindow.out.println("连接建立!

请发送信息,输入BYE结束\n");//向客户发登录信息

Threadreceiver=newServerWindow();

receiver.setDaemon(true);//后台程序

receiver.start();//创建并启动接收线程

}

catch(IOExceptione)

{

myWindow.showText(""+e);

}

}

publicvoidrun()//接收信息线程

{

booleandone=true;

while(done)

{

//接收信息

//如不为空,则在输出文本区显示

//否则,done=false;

try

{

Stringstr=myWindow.in.readLine();//接收服务器信息

if(str!

=null)

myWindow.showText("客户:

"+str);

}

catch(IOExceptionie)

{

System.out.println("连接断开!

");

done=false;

}

}

}

}

(四)ServerFrame的代码

packagews;

importjava.awt.*;

importjavax.swing.*;

importjava.awt.event.*;

importjava.io.*;

import.*;

importjavax.swing.border.*;

publicclassServerFrameextendsJFrame//创建JFrame的子类

{

publicSocketsocket=null;//连接时获取的socket放在这里

publicBufferedReaderin=null;//从这里读入数据

publicPrintWriterout=null;//从这里输出数据

publicbooleanconnectFlag=false;//当建立连接时,该标志为true

publicstaticServerSocketserverSocket=null;

privateContainercontent=getContentPane();

privateJTextAreatext=newJTextArea(30,100);//生成输出文本组件

privateJTextAreakeyIn=newJTextArea(30,100);//生成输入文本组件

publicstaticfinalintCONNECT=001;

publicstaticfinalintSEND=002;

publicstaticfinalintQUIT=003;

publicServerFrame(Stringtitle)//构造方法

{

super(title);//调用JFrame的构造方法

setDefaultCloseOperation(EXIT_ON_CLOSE);

Boxroom=Box.createVerticalBox();

text.setEditable(false);

text.setLineWrap(true);

JScrollPanescrollText=newJScrollPane(text);//加滚动条

scrollText.setAutoscrolls(true);

scrollText.setPreferredSize(newDimension(400,1000));

room.add(scrollText);

keyIn.setLineWrap(true);

JScrollPanescrollKey=newJScrollPane(keyIn);//加滚动条

scrollKey.setAutoscrolls(true);

room.add(scrollKey);

JPanelcontrol=newJPanel();

Dimensionsize=newDimension(80,20);

Borderborder=BorderFactory.createRaisedBevelBorder();

JButtonconnect=newJButton("连接");

JButtonsend=newJButton("发送");

JButtonquit=newJButton("退出");

connect.setBorder(border);

send.setBorder(border);

quit.setBorder(border);

connect.setPreferredSize(size);

send.setPreferredSize(size);

quit.setPreferredSize(size);

//connect.addActionListener(newControlAction(CONNECT));

send.addActionListener(newControlAction(SEND));

quit.addActionListener(newControlAction(QUIT));

//control.add(connect);

control.add(send);

control.add(quit);

room.add(control);

content.add(room,BorderLayout.CENTER);

}

publicvoidshowText(Stringstr)

{

text.append(str+"\n");

}

classControlActionimplementsActionListener//按钮事件处理

{

intcontrolType=CONNECT;

publicControlAction(inttype)

{

controlType=type;

}

publicvoidactionPerformed(ActionEvente)

{

switch(controlType)

{

caseSEND:

//按了发送按钮

if(connectFlag)

{

StringkeyText=keyIn.getText();

//在输出文本区显示输入的文本

showText("服务器:

"+keyText);

//发送键入的文本

keyIn.setText("");

out.println(keyText);

//将输入文本发送给服务器

}

break;

caseQUIT:

//按了退出按钮

connectFlag=false;

try

{

out.println("QUIT");

out.close();

in.close();

System.exit

(1);

}

catch(IOExceptionioe)

{

System.out.println("QuitError!

!

");

}

}

}

}

}

四、涉及到的知识点的说明

窗体(Frame)――容器(Container)――(设置容器布局)――面板(Panel)――(设置面板布局)――控件、

1窗体

在Java程序中,我们如果想创建并运行一个窗体,就必须让我们编写的类继承自JFrame类,而使用JFrame类之前必须导入java.awt.*和java.swing.*如:

publicclassClientWindowextendsThread

{

staticClientFramemyWindow=newClientFrame("聊天室:

客户");

publicstaticvoidmain(Stringargs[])

{

myWindow.setBounds(50,100,400,300);

myWindow.setVisible(true);

Threadreceiver=newServerWindow();

receiver.setDaemon(true);//后台程序

receiver.start();//创建并启动接收线程

}

publicvoidrun()//接收信息线程

{

booleandone=true;

while(done)

{

//接收信息

//如不为空,则在输出文本区显示

//否则,done=false;

try

{

Stringstr=myWindow.in.readLine();//接收服务器信息

if(str!

=null)

myWindow.showText("服务器:

"+str);

}

catch(IOExceptione)

{

System.out.println("连接断开!

");

done=false;

}

}

}

}

2窗体中的Container

如果我们要往空白的窗体中加入其它东西,我们首先需要一个Container(容器)为基础,就像在一个中空的架子上搭了一块木板,然后我们就可以在板子上放我们想放的东西。

我们可以在构造函数中加入

3面板

面板(Panel)是包含在窗口中盛放控件的中间级别的容器。

它将被Container对象包容。

我们用它来归纳各种各样的控件,就像我们平常放置小东西用的带有格子的抽屉。

4加载控件

控件类包括JTextField、JLabel、JButton等等。

声明您想加入窗体的控件,并调用面板对象的add()方法把控件放入面板。

5界面设计

使了BroderLayout时,放在CENTER部位的控件会尽可能的得到窗体的空间。

而其他位置的控件会尽可能地变小(长)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1