一个关于如何创建类似于QQ客户端聊天窗口的模拟小项目
对于不久之前学习到的一个有关的类似于QQ聊天框的模拟项目,对其中涉及到的知识在这里做一下总结。
- 首先,你要先创建一个客户端聊天框(取名为: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客户端聊天窗口的模拟小项目的更多相关文章
- 利用TabHost制作QQ客户端标签栏效果(低版本QQ)
学习一定要从基础学起,只有有一个好的基础,我们才会变得更加的perfect 下面小编将利用TabHost制作QQ客户端标签栏效果(这个版本的QQ是在前几年发布的)…. 首先我们看一下效果: 看到这个界 ...
- classmethod一个用处是创建可选类构造器
Definition and Introduction通常来说, descriptor 是一种绑定着特殊行为属性的对象, 在访问它时行为被descriptor协议定义的方法所重载.这些方法是__get ...
- 自定义控件--CircleImageView(类似于QQ、微信圆形头像自定义控件)
现在基本上所有的需要用户注册的APP都有一个需要用户上传头像的需求,上传的头像基本都是类似于QQ.微信等社交应用圆形头像.最近,正在做的一个社交应用多处需要用到这种圆形头像的处理,总不能每次都对图片做 ...
- 可以创建专业的客户端/服务器视频会议应用程序的音频和视频控件LEADTOOLS Video Conferencing SDK
LEADTOOLS Video Streaming Module控件为您创建一个自定义的视频会议应用程序和工具提供所有需要的功能.软件开发人员可以使用Video Streaming Module SD ...
- [课堂实践与项目]手机QQ客户端--4期(SQLite的加入,注册,找回,登录界面的修改):建立关于QQ注册类,使用SQLite进行存储,
经过昨天下午和今天上午的不懈努力,终于通过了SQLite的学习. 我们现在这里定义一个有关SQLIte的封装类,便于我在后面的用户注册,用户密码找回,和登录界面的使用 1.首先我们看看我们建立的use ...
- 类似于qq空间类型的评论和回复
最近学习thinkphp,做了一个博客系统,其中感觉实现一个类似于qq空间的评论和回复功能比较复杂,所以把这次的经历记录下来,与大家共勉,具体的方法就不说了,在这里分享一下思路. 目标就是这种,关键是 ...
- node.js中使用http模块创建服务器和客户端
node.js中的 http 模块提供了创建服务器和客户端的方法,http 全称是超文本传输协议,基于 tcp 之上,属于应用层协议. 一.创建http服务器 const http = require ...
- node.js中net模块创建服务器和客户端(TCP)
node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ...
- JS时间轴效果(类似于qq空间时间轴效果)
在上一家公司写了一个时间轴效果,今天整理了下,感觉有必要写一篇博客出来 给大家分享分享 当然代码还有很多不足的地方,希望大家多指点指点下,此效果类似于QQ空间或者人人网空间时间轴效果,当时也是为了需求 ...
随机推荐
- jquery ajax请求后台 的简单例子
jQuery.ajax(url,[settings]) 概述 通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax ...
- 如何更改c#项目的App.config文件
动态修改App.Config 和web.Config 首先假设你的应用程序配置文件如下: <?xml version="1.0" encoding="utf-8&q ...
- 线性判别分析(Linear Discriminant Analysis,LDA)
一.LDA的基本思想 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD) ...
- Enterprise Library 中加密数据库连接字符串
看了SHY520写的关于Data Access Application Block的文章,写得不错,忽略了一点就是如何去加密数据库连接字符串,这儿我简单的介绍一下.我们知道,在Enterprise L ...
- HTML5画布Canvas
一.Canvas概念介绍 1.概念 Canvas : 画布 2.作用 : HTML5 Canvas 元素用于图形的绘制, 通过脚本(通常是JavaScript)来完成.它本身只是个图形容器,必须使用脚 ...
- 搜狐cache文件夹设置
比如说本来sohucache放在E盘,你想改到D盘.第一步:在运行中打开regedit,在弹出的HKEY_CURRENT_USER选中Software第二步:再选中SOHU再选中SoHuVA再选中Ca ...
- PostgreSQL的 initdb 源代码分析之八
继续分析 由于 我并未进行特殊的参数设置,所以 (strlen(default_text_search_config) == 0) 成立. 故 调用 default_text_search_con ...
- 从零开始学android开发- layout属性介绍
android:id 为控件指定相应的ID android:text 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串 android:gravity 指定Vi ...
- c# windowsForm打印
在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .net Framework的打 印功能都以组件的方式提供,为程序员提供了很大的方便,但是 ...
- poj 1338 Ugly Numbers(丑数模拟)
转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063? viewmode=contents 题目链接:id=1338&q ...