建一个服务端类ChatServer,用于设置端口接收连接

package com.swift;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class ChatServer {public static void main(String[] args) {try {ServerSocket ss = new ServerSocket(8888);for (;;) {Socket s = ss.accept();//当有连接,则显示,用于测试System.out.println("a client connected success");}} catch (IOException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}}

客户端修改代码如下:

package com.swift;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class ChatClientFrame2 extends JFrame {private static final long serialVersionUID = -118470059355655240L;JLabel label_shang=new JLabel();JLabel label_xia=new JLabel();JTextField tf = new JTextField(38);JTextArea ta = new JTextArea(15, 50);JButton button=new JButton();public ChatClientFrame2() {setBounds(200, 200, 500, 400);setTitle("客户端聊天工具 —— 0.3");//对窗口进行大的布局,分为三行一列,在pBasic面板上添加三个面板shang zhong xiaJPanel pBasic=new JPanel();pBasic.setLayout(new BorderLayout());//不设置默认也是这种布局模式setContentPane(pBasic);//把面板放在窗口上,不记得用this.关键字JPanel shang=new JPanel();JPanel zhong=new JPanel();JPanel xia=new JPanel();//设置JPanel面板的大小shang.setSize(470, 25);zhong.setSize(470, 180);xia.setSize(470, 40);pBasic.add(shang,BorderLayout.NORTH);pBasic.add(zhong,BorderLayout.CENTER);pBasic.add(xia,BorderLayout.SOUTH);shang.setBackground(Color.red);zhong.setBackground(Color.yellow);xia.setBackground(Color.blue);/** 三个面板,上边放一个标签“聊天记录”,中间放一个文本域,* 下边分为左中右——分别放标签“输入信息“,文本框和”发送“按钮*/label_shang.setText("聊天记录");shang.add(label_shang);ta.setLineWrap(true);// 自动换行JScrollPane scroll=new JScrollPane(ta);// 增加滚动条,以便不增加行数
        zhong.add(scroll);label_xia.setText("输入信息");xia.add(label_xia,BorderLayout.WEST);/** 增加功能,窗口监听事件,窗口打开时设置光标焦点在tf文本域中*/this.addWindowListener(new WindowAdapter() {@Overridepublic void windowOpened(WindowEvent e) {tf.requestFocus();}});xia.add(tf,BorderLayout.CENTER);button.setText("发送");xia.add(button,BorderLayout.EAST);/** 增加“发送”按钮的功能,增加回车的功能,监听相同,* 则使用内部类实现,以提高代码复用性*/final class ShareListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {String taText=ta.getText();String tfText=tf.getText()+"\r\n";ta.setText(taText+tfText);tf.setText("");}}button.addActionListener(new ShareListener());tf.addActionListener(new ShareListener());//通过压缩自动调整各个面板
        pack();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 点关闭按钮同时退出程序setVisible(true);//创建窗体直接调用连接服务器
        connect();}/** 增加一个连接到服务器的方法*/public void connect() {try {Socket s=new Socket("127.0.0.1",8888);System.out.println("connected!");} catch (UnknownHostException e) {// TODO Auto-generated catch block
            e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}public static void main(String[] args) {// 别忘了创建窗体对象,也可以用生成对象调用其他的方法如launchFrame()new ChatClientFrame2();}}

先把服务端类ChatServer运行

再运行客户端类ChatClientFrame2 运行

分别查看服务器端运行结果如下:

客户端运行结果如下:

客户端窗口打开时,光标位置

转载于:https://www.cnblogs.com/qingyundian/p/7922759.html

java在线聊天项目0.4版本 制作服务端接收连接,客户端连接功能 新增客户端窗口打开时光标指向下边文本域功能,使用WindowListener监听WindowAdapter...相关推荐

  1. java在线聊天项目0.6版 解决客户端关闭后异常问题 dis.readUTF()循环读取已关闭的socket...

    服务端对try catch finally重新进行了定义,当发生异常,主动提示,或关闭出现异常的socket 服务器端代码修改如下: package com.swift;import java.io. ...

  2. java在线聊天项目 使用SWT快速制作登录窗口,可视化窗口Design 更换窗口默认皮肤(切换Swing自带的几种皮肤如矩形带圆角)...

    SWT成功激活后 new一个JDialog 调整到Design视图 默认的视图模式是BorderLayout,无论你怎么拖拽,只能放到东西南北中的位置上 所以,我们把视图模式调整为AbsoluteLa ...

  3. java在线聊天项目ppt_基于JavaEE的在线聊天聊天.ppt

    基于JavaEE的在线聊天聊天.ppt 聊城大学论文答辩,指导教师,学生姓名,年 月,基于JavaEE的在线聊天聊天 系统的设计与实现,论文提纲,,选题背景.研究内容,1,JavaEE技术介绍,主要创 ...

  4. PHP仿QQ实时在线聊天1.0源码

    源码说明 1.实现实时在线聊天 2.自适应手机PC端 演示图 使用方式 1.上传源码后解压 2.将 data.sql 数据文件导入数据库 3.修改根目录下 data.php 文件里的数据库连接信息 下 ...

  5. java int不将0忽略_Java微服务:蛋糕是骗人的,但您不能忽略它

    java int不将0忽略 构建微服务实际上意味着什么? 通过微服务框架的眼光回答 忽略微服务的趋势已变得不可能. 有些人会说这只是另一个难以忍受的流行语,而另一些人会背诵打破巨石的优势或采取逆势方法 ...

  6. Java Spring Boot 2.0 实战之制作Docker镜像并推送到Docker Hub和阿里云仓库

    内容摘要:大规模集群快速部署Java应用,需要制作Docker镜像,本次课程详细介绍如何制作Java程序的Docker镜像文件,深入解析DockerFile核心参数,以及实践演练把我们制作的Docke ...

  7. Java在线教育项目 第一天项目介绍和工程搭建

    第一章 项目介绍和工程搭建 学习目标 熟悉移动端应用系统的架构设计 熟悉大型软件系统设计中的各种图形结构 熟悉数据库分库分表设计技巧 熟悉Spring boot2.0+JavaConfig项目封装配置 ...

  8. 微信支付开发,基于SpringBoot+Vue架构的Java在线支付项目

    目录 前言 1. 支付安全 1.1 对称加密和非对称加密 1.2 身份认证 1.3 摘要算法 1.4 数字签名和数字证书 2. 项目初期 2.1 构建测试 2.2 引入Swagger 2.3 引入lo ...

  9. java 在线聊天室_一万人一起在线聊天的聊天室,怎样用Java实现?

    原标题:一万人一起在线聊天的聊天室,怎样用Java实现? 今天逛论坛的时候发现一个Java Socket实现多人聊天室的源码,感觉写得还不错,至少算个有模有样的聊天工具.虽然有点简单,但是也算是一个项 ...

最新文章

  1. 在Ubuntu 14.04 64bit上搭建单机本地节点Spark 1.3.0环境
  2. C++ 发手机短信(很易很简单)
  3. Effective C++ 条款05
  4. vs2012调试中出现char类型形参与LPCTSTR类型不匹配
  5. cad vba 打开文件对话框_CAD文件损坏?无法打开?别急,这八种方法或许能帮到你...
  6. 在ubuntn kylin系统eclipse中Java语言helloworld程序
  7. 《淡夜未央》:互动叙事游戏如何提升玩家参与感和互动性?
  8. 5G的场景、需求、通信速率
  9. 自定义python框架_Python web 框架Sanic 学习: 自定义 Exception
  10. 云鹊医认证审核需要多久_ISO9001质量管理体系认证审核需要准备哪些资料
  11. Centos系统服务FAQ汇总(下)
  12. python 通达信上传云端_Python读取通达信本地数据
  13. 格力又双叒发福利了 将给所有员工交电话费!
  14. 政策解读:《智能硬件产业创新发展专项行动(2016-2018年)》(下)
  15. 【干货】数据挖掘比赛大数据处理和建模经验
  16. LeetCode 623. Add One Row to Tree
  17. 小爱mini改aux立体声_拆解报告:Redmi小爱音箱Play
  18. 极客大学架构师训练营 数据结构与算法 平衡二叉树 红黑树 动态规划 遗传算法 第15课 听课总结
  19. 手机短信压力测试v1.4
  20. 看《岭南大医生》羽素与专家共揭痘痘背后的问题

热门文章

  1. MIT有个做披萨的GAN,登上了CVPR:加香肠、去橄榄、再烤熟,分层才是王道
  2. 负载均衡器之 Haproxy
  3. react封装一个类似安卓的toast控件message
  4. 【347天】跃迁之路——程序员高效学习方法论探索系列(实验阶段105-2018.01.18)...
  5. MySQL · 捉虫动态 · show binary logs 灵异事件
  6. 重写修改重写的Dialog显示问题
  7. I2C总线学习(二)--数据传送格式
  8. 创建,修改Table格式
  9. print python excel分隔_合并/拆分 Excel?Python、VBA轻松自动化
  10. 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个