本文实例为大家分享了java实现简单聊天室的具体代码,供大家参考,具体内容如下

先整理下思路:

1.创建一个通信服务端,传入端口号和相关的流后等待客户端连接,并初始化图形界面。

2.创建一个JFrame,用于写出聊天的界面,这里界面名称由其他类传入。

3.把客户端创建的方法写进JFrame(当然这里很粗糙的方法)

4.设置按钮的监听事件,发送消息和离线功能

首先创建一个服务端的类

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

import com.jero.jframe.ChatSocketJFrame;

//创建服务端

public class ChatServerSocket{

//构造初始化方法

public ChatServerSocket(String name,int port) throws IOException{

//创建Socket服务连接对象

ServerSocket serverSocket = new ServerSocket(port);

//等待客户端连接

Socket client = serverSocket.accept();

//初始化聊天界面

try {

new ChatSocketJFrame(name,client);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//关闭流

serverSocket.close();

}

public static void main(String[] args) throws Exception{

new ChatServerSocket("服务端",8001);//启动服务端,指定网名和端口

}

}

package com.jero.jframe;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.InetAddress;

import java.net.Socket;

import java.net.UnknownHostException;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.border.EmptyBorder;

import com.jero.socket.ChatServerSocket;

import javax.swing.JTextPane;

import javax.swing.JTextField;

import javax.swing.JButton;

import javax.swing.JTextArea;

public class ChatSocketJFrame extends JFrame implements ActionListener {

private Socket socket;

private String name;

private JButton BT_SEND,BT_LEAVE,BT_LOGIN;

private JTextArea textArea;

private JPanel contentPane;

private JTextField textField;

private PrintWriter cout;

/**

* Launch the application.

* @throws Exception

* @throws IOException

* @throws UnknownHostException

*/

public static void main(String[] args) throws UnknownHostException, IOException, Exception {

//实例化界面以及客户端

new ChatSocketJFrame("客户端","127.0.0.1",8001);

}

/**

* Create the frame.

*/

public ChatSocketJFrame(String name, Socket socket)throws Exception, IOException {

//聊天室界面

super("聊天室"+name+" "+InetAddress.getLocalHost()+" "+socket.getPort());

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 733, 519);

this.textArea = new JTextArea();

this.textArea.setEditable(false);

this.getContentPane().add(new JScrollPane(this.textArea));

JPanel panel = new JPanel();

this.getContentPane().add(panel, "South");

this.textField = new JTextField(16);

panel.add(this.textField);

BT_SEND = new JButton("发送");

panel.add(BT_SEND);

BT_SEND.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

System.out.println("按钮已点击");

cout.println(name+"说: "+textField.getText()+"\n");

textArea.append("我说: "+textField.getText()+"\n");

textField.setText("");

}

});

BT_LEAVE = new JButton("离线");

panel.add(BT_LEAVE);

BT_LEAVE.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

textArea.append("我离线");

cout.println(name+"离线\n"+"bye");

BT_LEAVE.setEnabled(false);

BT_SEND.setEnabled(false);

}

});

this.setVisible(true);

//开始创建通信

this.socket = socket;

this.name = name;

//获得Socket的输出流并立即刷新

this.cout = new PrintWriter(socket.getOutputStream(),true);

//把网名传给对方

this.cout.println(name);

//获得Socket对象的输入流,创建字符输入流

BufferedReader buff = new BufferedReader(new InputStreamReader(socket.getInputStream()));

//接受对方的网名

String aline = buff.readLine();

//显示对方发送的内容

textArea.append("连接"+aline+"成功!!\n");

aline = buff.readLine();

//如果内容不为空并且对方不离线,则相互传送消息

while(aline!=null&&!aline.equals("bye")){

textArea.append(aline+"\r\n");

aline = buff.readLine();

}

//当对方离线时,关闭所有的流

buff.close();

cout.close();

socket.close();

//把按钮设置为不可操作

BT_SEND.setEnabled(false);

BT_LEAVE.setEnabled(false);

}

/**

* @wbp.parser.constructor

*/

public ChatSocketJFrame(String name,String host,int port) throws UnknownHostException, IOException, Exception{

//创建客户端

this(name,new Socket(host,port));

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

//可以把动作监听写进此函数,这个就不演示了

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java编写简单聊天界面_java实现简单聊天室单人版相关推荐

  1. java qq登录成功界面_java实现简单QQ登录界面

    本文实例为大家分享了java实现简单QQ登录界面的具体代码,供大家参考,具体内容如下 java在图形界面,不是太强项,但不是不可以做,它的开源是very nice! 实现代码如下(想实现完美的界面,可 ...

  2. java编写翻译字典数据库_java实现简单的英文文本单词翻译器功能示例

    本文实例讲述了java实现简单的英文文本单词翻译器功能.分享给大家供大家参考,具体如下: 直接上代码: package fanyi; import java.io.BufferedReader; im ...

  3. java编写系统登录界面_java 登陆界面怎么写,连接数据库后

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 界面是 package 界面类; import javax.jws.soap.SOAPBinding.Use; import javax.swing.JB ...

  4. java 简单聊天室_java实现简单聊天室单人版

    本文实例为大家分享了java实现简单聊天室的具体代码,供大家参考,具体内容如下 先整理下思路: 1.创建一个通信服务端,传入端口号和相关的流后等待客户端连接,并初始化图形界面. 2.创建一个JFram ...

  5. java编写教师类输出_Java类和对象的区别和联系,超简单易懂!

    在面向对象的编程语言中,类和对象必然是最核心的特性之一.本文主要介绍Java中的类和对象. 示例 以班级成员为例,班上有小红.小明.小李,还有王老师.张老师和魏老师,我们认为他们都属于"人类 ...

  6. php仿qq聊天界面,jquery仿微信聊天界面

    首先看一下我们的效果图. 这个颜色可能搭配的有些不合适,但基本功能大都实现了.就是你和你同桌对话,你发的消息在你的左侧,而在他设备的右侧. 首先先写好整体的框架,在一个大容器中放两个盒子,分别是左侧和 ...

  7. java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个calendarbean类,用于基本的日期计算: package other1; import jav ...

  8. java简易日历程序报告_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import jav ...

  9. java编写添加背景音乐代码_java代码中简单添加背景音乐(亲测有效)

    在做java贪吃蛇游戏课设时,想添加背景音乐,用了以下很简单的步骤即可完成,亲测有效哦! 调用方法: new Thread(()->{while(true) {Data.playMusic(); ...

  10. java图形用户登录界面_Java简单登录图形界面

    一.登录界面 1.程序代码 1 import java.awt.*;//导入awt包 2 import javax.swing.*;//导入swing包 3 import java.awt.event ...

最新文章

  1. 【C++】【一】结构体数组
  2. 【积淀】半夜突然有点想法
  3. php采集url,PHP-如何采集这个url跳转内容呢
  4. python内置函数map_python内置函数 map/reduce
  5. linux安装php和nginx,Linux下安装配置Nginx以及安装PHP
  6. 程序员眼中的“鼠标宏”
  7. win7桌面计算机图标去掉,Win7去掉快捷方式箭头_Win7去掉桌面图标箭头软件-192路由网...
  8. 转载:KOF97简易出招原理解析
  9. python写word报告_使用Python自动生成word巡检报告【二】
  10. 基于javaweb+SpringBoot+JPA图书馆座位占座预约管理系统(管理员、老师、学生)
  11. 有借必有贷,借贷必相等
  12. 喜欢听音乐的小伙伴看过来
  13. java+js实现展示本地文件夹下的所有图片demo[申明:来源于网络]
  14. NPOI在Excel中插入图片
  15. 安逸云中小云厂商机遇
  16. python-浮点数取整
  17. 小米手环7外观曝光 相比小米手环6有大升级
  18. c++语言小游戏源码,跪求小游戏c++代码
  19. 电脑显卡matlab,什么配置的电脑可以用Matlab?
  20. 长春理工大学计算机考研资料汇总

热门文章

  1. 谷歌Chrome繁体字乱码问题
  2. 计算机遥感毕设选题,遥感硕士毕业论文题目
  3. arcgis建立拓扑关系
  4. 详解使用可道云Kodbox快速在云服务器上搭建云盘
  5. matlab绘制图像的直方图、杆状图和折线图等
  6. C#编写NotifyIcon
  7. SPSS之双独立样本的T检验
  8. 计算机网络简历自我认识,计算机网络专业简历的自我评价
  9. nutch ajax mysql_Nutch爬取Ajax请求的动态网页
  10. RFID(射频识别)详解(带图)