对于不久之前学习到的一个有关的类似于QQ聊天框的模拟项目,对其中涉及到的知识在这里做一下总结。

  1. 首先,你要先创建一个客户端聊天框(取名为:ChatClient,它是你创建的类),这个类继承了Frame。而这个Frame是java.awt里的一个子类,它是带有标题和边框的顶层窗口,它里面有很多方法(具体查手册)。下面是一段示例代码:

  

 import java.awt.*;

 public class ChatClient extends Frame{//你创建的类继承了Frame

     public static void main(String[] args) {
new ChatClient().launchFrame();//通过new实例化创建一个对象
} public void launchFrame(){//设置聊天框的大小参数
setLocation(400,300);
setSize(300,300);
setVisible(true);//设置为可见
}
}

这是运行之后出现的一个雏形聊天框:

  2. 第二步,调整聊天框的大小,并且往框架中添加控件。下面是代码:

 import java.awt.*;

 public class ChatClient extends Frame{
//实例化创建对象
TextField tfTxt = new TextField();
TextArea taContent = new TextArea(); public static void main(String[] args) {
new ChatClient().launchFrame();
} public void launchFrame(){
setLocation(400,300);
setSize(300,300);
//往框架中添加控件,Frame默认的布局是BorderLayout
add(tfTxt,BorderLayout.SOUTH);
add(taContent,BorderLayout.NORTH);
this.pack(); setVisible(true);
}
}

这是运行之后的效果:

  3.添加事件感应,可以往文本框中输入文字

 import java.awt.*;
import java.awt.event.*; public class ChatClient extends Frame { // 添加文本域事件感应,三种方法:外部并行类,内部类,局部匿名类
TextField tfTxt = new TextField();
TextArea taContent = new TextArea(); public static void main(String[] args) {
new ChatClient().launchFrame();//通过new实例化创建一个对象
} public void launchFrame() {
setLocation(400, 300);
setSize(300, 300);
// 往框架中添加控件
add(tfTxt, BorderLayout.SOUTH);
add(taContent, BorderLayout.NORTH);
this.pack();//打包
//给当前对象添加一个窗口监听事件
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
tfTxt.addActionListener(new TfListener());//给文本域添加一个事件监听
setVisible(true);
} private class TfListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String s = tfTxt.getText().trim(); }
}
}

运行之后的效果:

  4.添加客户端,通过socket链接客户端和服务器。

import java.io.IOException;
import java.net.*; public class ChatServer {
//添加服务端
public static void main(String[] args) {
try(
ServerSocket ss = new ServerSocket(8888);//通过socket链接客户端和服务器端
){
while (true){
Socket s = ss.accept();
System.out.println( "a client connected!!" );
}
}catch(Exception e){
e.printStackTrace();
}
} }

  5.第五步,链接服务器。

import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.*; public class ChatClient extends Frame { // 添加文本域事件感应,三种方法:外部并行类,内部类,局部匿名类 TextField tfTxt = new TextField();
TextArea taContent = new TextArea(); public static void main(String[] args) {
new ChatClient().launchFrame();
} public void launchFrame() {
setLocation(400, 300);
setSize(300, 300);
// 往框架中添加控件
add(tfTxt, BorderLayout.SOUTH);
add(taContent, BorderLayout.NORTH);
this.pack();
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
tfTxt.addActionListener(new TfListener());
setVisible(true);
connect();
} //链接服务器方法
public void connect(){
try(
Socket s = new Socket("127.0.0.1", 8888);//端口号必须一致
){
System.out.println( "Connected sucsess" );
}catch(IOException e){
e.printStackTrace();
}
} private class TfListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String s = tfTxt.getText().trim(); }
}
}

  

先写到这里,有什么不对的地方,请大神敬请指教!

 

一个关于如何创建类似于QQ客户端聊天窗口的模拟小项目的更多相关文章

  1. 利用TabHost制作QQ客户端标签栏效果(低版本QQ)

    学习一定要从基础学起,只有有一个好的基础,我们才会变得更加的perfect 下面小编将利用TabHost制作QQ客户端标签栏效果(这个版本的QQ是在前几年发布的)…. 首先我们看一下效果: 看到这个界 ...

  2. classmethod一个用处是创建可选类构造器

    Definition and Introduction通常来说, descriptor 是一种绑定着特殊行为属性的对象, 在访问它时行为被descriptor协议定义的方法所重载.这些方法是__get ...

  3. 自定义控件--CircleImageView(类似于QQ、微信圆形头像自定义控件)

    现在基本上所有的需要用户注册的APP都有一个需要用户上传头像的需求,上传的头像基本都是类似于QQ.微信等社交应用圆形头像.最近,正在做的一个社交应用多处需要用到这种圆形头像的处理,总不能每次都对图片做 ...

  4. 可以创建专业的客户端/服务器视频会议应用程序的音频和视频控件LEADTOOLS Video Conferencing SDK

    LEADTOOLS Video Streaming Module控件为您创建一个自定义的视频会议应用程序和工具提供所有需要的功能.软件开发人员可以使用Video Streaming Module SD ...

  5. [课堂实践与项目]手机QQ客户端--4期(SQLite的加入,注册,找回,登录界面的修改):建立关于QQ注册类,使用SQLite进行存储,

    经过昨天下午和今天上午的不懈努力,终于通过了SQLite的学习. 我们现在这里定义一个有关SQLIte的封装类,便于我在后面的用户注册,用户密码找回,和登录界面的使用 1.首先我们看看我们建立的use ...

  6. 类似于qq空间类型的评论和回复

    最近学习thinkphp,做了一个博客系统,其中感觉实现一个类似于qq空间的评论和回复功能比较复杂,所以把这次的经历记录下来,与大家共勉,具体的方法就不说了,在这里分享一下思路. 目标就是这种,关键是 ...

  7. node.js中使用http模块创建服务器和客户端

    node.js中的 http 模块提供了创建服务器和客户端的方法,http 全称是超文本传输协议,基于 tcp 之上,属于应用层协议. 一.创建http服务器 const http = require ...

  8. node.js中net模块创建服务器和客户端(TCP)

    node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ...

  9. JS时间轴效果(类似于qq空间时间轴效果)

    在上一家公司写了一个时间轴效果,今天整理了下,感觉有必要写一篇博客出来 给大家分享分享 当然代码还有很多不足的地方,希望大家多指点指点下,此效果类似于QQ空间或者人人网空间时间轴效果,当时也是为了需求 ...

随机推荐

  1. easyUI之tree

    转自:http://www.cnblogs.com/CoreCaiNiao/archive/2010/08/20/1804387.html http://blog.csdn.net/l27775918 ...

  2. Thinkphp框架----微信公众测试号开发(2)

    ---恢复内容开始--- 最近忙着投简历找工作.现在继续更 微信回复图文设置. 效果: 页面HTML需要一个form表单 简单效果: 接下来是数据库 字段:id title(标题) text(描述) ...

  3. 硝烟中的scrum和xp学习笔记 - 怎样编写产品backlog

    产品backlog是scrum的核心,也是一切的起源. 从根本上说,它就是一个需求/故事/特性组成的列表,按照重要性的级别排序. 我们叫它story, 或者backlog(条目). Backlog I ...

  4. hdu 5534 Partial Tree 背包DP

    Partial Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  5. Android_通过传感器抓小偷

    package com.beyond.phonestolen; import android.hardware.Sensor; import android.hardware.SensorEvent; ...

  6. 升级、备份红帽PaaS openshift 上的 wordpress

    红帽提供了一个很稳定的PAAS服务平台:openshift!此博客即作为wordpress建在里面. 这里记录怎样升级与备份wordpress. 预备: 安装 openshift command li ...

  7. CSAPP缓冲区溢出攻击实验(上)

    CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数 ...

  8. Ruby on Rails Tutorial 第六章 用户模型

    1.用户模型(1)数据库迁移Rails默认使用关系数据库存储数据,数据库中的表有数据行组成,每一行都有相应的列,对应数据属性.把列名命名为相应的名字后,ActiveRecord会自动把他们识别为用户对 ...

  9. Android+Robotium

    因为调动到一个新的部门在这个部门做的一直就是移动产品,所以这段时间会一直不断的研究app的自动化,主要是针对android,这里我采用的是Robotium框架,这个框架比较简单,使用eclipse+r ...

  10. jquery 实现图片跳动。提示作用

    需要做几件事: 第一:样式表定义 .red { border: 2px solid #ffffff; } 第二:定义抖动函数 function shake(ele, cls, times) { var ...