JAVA大作业Word格式.docx

上传人:b****4 文档编号:7438249 上传时间:2023-05-08 格式:DOCX 页数:20 大小:84.67KB
下载 相关 举报
JAVA大作业Word格式.docx_第1页
第1页 / 共20页
JAVA大作业Word格式.docx_第2页
第2页 / 共20页
JAVA大作业Word格式.docx_第3页
第3页 / 共20页
JAVA大作业Word格式.docx_第4页
第4页 / 共20页
JAVA大作业Word格式.docx_第5页
第5页 / 共20页
JAVA大作业Word格式.docx_第6页
第6页 / 共20页
JAVA大作业Word格式.docx_第7页
第7页 / 共20页
JAVA大作业Word格式.docx_第8页
第8页 / 共20页
JAVA大作业Word格式.docx_第9页
第9页 / 共20页
JAVA大作业Word格式.docx_第10页
第10页 / 共20页
JAVA大作业Word格式.docx_第11页
第11页 / 共20页
JAVA大作业Word格式.docx_第12页
第12页 / 共20页
JAVA大作业Word格式.docx_第13页
第13页 / 共20页
JAVA大作业Word格式.docx_第14页
第14页 / 共20页
JAVA大作业Word格式.docx_第15页
第15页 / 共20页
JAVA大作业Word格式.docx_第16页
第16页 / 共20页
JAVA大作业Word格式.docx_第17页
第17页 / 共20页
JAVA大作业Word格式.docx_第18页
第18页 / 共20页
JAVA大作业Word格式.docx_第19页
第19页 / 共20页
JAVA大作业Word格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JAVA大作业Word格式.docx

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

JAVA大作业Word格式.docx

(二)客户端

三、核心代码说明

(一)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的代码

importjava.awt.event.*;

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)

break;

caseSEND:

//按了发送键

if(connectFlag)

StringkeyText=keyIn.getText();

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

showText("

客户:

+keyText);

//发送键入的文本

keyIn.setText("

out.println(keyText);

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

caseQUIT:

//按了退出键

connectFlag=false;

out.println("

QUIT"

out.close();

in.close();

System.exit

(1);

socket.close();

catch(IOExceptionioe)

(三)ServerWindow的代码

publicclassServerWindowextendsThread

publicstaticServerFramemyWindow=newServerFrame("

聊天室:

服务器"

publicstaticServerSocketserverSocket=null;

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

等待连接...."

ServerSocketserverSocket=newServerSocket(8189);

//建立服务器socket,port=8189

Socketincoming=serverSocket.accept();

//等待客户建立连接

myWindow.connectFlag=true;

myWindow.in=

newInputStreamReader(incoming.getInputStream()));

//输入数据流

myWindow.out=

newPrintWriter(incoming.getOutputStream(),true);

//输出数据流*/

连接建立!

myWindow.out.println("

连接建立!

请发送信息,输入BYE结束\n"

//向客户发登录信息

catch(IOExceptione)

+e);

//接收服务器信息

(四)ServerFrame的代码

publicclassServerFrameextendsJFrame//创建JFrame的子类

publicServerFrame(Stringtitle)//构造方法

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

//control.add(connect);

publicvoidshowText(Stringstr)

//按了发送按钮

//发送键入的文本

//按了退出按钮

QuitError!

!

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

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

1窗体

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

2窗体中的Container

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

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

3面板

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

它将被Container对象包容。

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

4加载控件

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

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

5界面设计

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

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

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2