java带图形用户的聊天_java:带有图形化界面,可以发送和接收的聊天工具
/**
根据UDP协议,设计一个聊天程序,可以发送和接收,并有相应的图形化界面
*/
import java.net.*;
import java.awt.*;
import java.awt.event.*;
//发送信息
class ChatSend implements Runnable
{
private Button but; //发送按钮
private TextArea tain; //输入文本
private TextArea taout; //接收信息,并显示自己的信息
public ChatSend(Button but, TextArea tain, TextArea taout)
{
this.but = but;
this.tain = tain;
this.taout = taout;
}
public void run()
{
//添加按钮监听,发送数据
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
//创建Socket服务
DatagramSocket SendSocket = new DatagramSocket();
//获取输入文本区域里的字符串
String line = tain.getText();
byte[] buf = line.getBytes();
//数据打包,发送
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("10.22.72.144"), 4008);
SendSocket.send(dp);
tain.setText("");
taout.append(line +"\r\n");
SendSocket.close();
}
catch(Exception ex)
{
System.out.println(e.toString());
}
}
});
//文本框中输入回车键监听
tain.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == e.VK_ENTER)
{
try
{
//创建Socket服务
DatagramSocket SendSocket = new DatagramSocket();
//获取文本区域里的字符串
String line = tain.getText();
byte[] buf = line.getBytes();
//数据打包发送
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("10.22.72.144"), 4008);
SendSocket.send(dp);
tain.setText("");
taout.append(line +"\r\n");
SendSocket.close();
}
catch(Exception ex)
{
System.out.println(e.toString());
}
}
}
});
}
}
//接收信息
class ChatReceive implements Runnable
{
private TextArea taout; //接收信息区域
public ChatReceive(TextArea taout)
{
this.taout = taout;
}
public void run()
{
while(true)
{
try
{
//创建Socket服务
DatagramSocket RecSocket = new DatagramSocket(5009);
//创建数据包,接收数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
RecSocket.receive(dp);
//获取数据信息
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(), 0, dp.getLength());
//信息添加到文本区域
taout.append(ip +":"+data +"\r\n");
RecSocket.close();
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
}
}
}
class Chat
{
public static void main(String[] args)
{
//设计图形化界面
Frame f = new Frame("我聊");
f.setSize(400, 400);
f.setLocation(300, 250);
f.setLayout(new FlowLayout());
//创建部件
TextArea tain = new TextArea();
TextArea taout = new TextArea();
Button but = new Button("发送");
taout.setColumns(50);
taout.setRows(18);
tain.setColumns(40);
tain.setRows(2);
f.add(taout);
f.add(tain);
f.add(but);
f.setVisible(true);
//窗口关闭监听
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
f.setVisible(false);
System.exit(0);
}
});
//创建并启动发送、接收线程
new Thread(new ChatSend(but, tain, taout)).start();
new Thread(new ChatReceive(taout)).start();
}
}
java带图形用户的聊天_java:带有图形化界面,可以发送和接收的聊天工具相关推荐
- 基于MFC框架的学生信息管理系统/学生成绩管理系统(带有图形化界面)
系统背景: 本系统基于 Visual Studio2013的环境搭建,运用MFC框架对系统进行设计和实现,本系统带有图形化界面,具有常用的用户登录注册功能,对个人信息的增删改查功能,对成绩的增删改查功 ...
- java图形界面计算器_java实现图形化界面计算器
本文实例为大家分享了java实现图形化界面计算器的具体代码,供大家参考,具体内容如下 最终效果图: 项目流程: 第一步:实现图形化界面(添加计算器的 Button 和 用于显示输入数字.输出结果的JT ...
- java 高级 图形化界面_java高级图形化界面
java.awt.event.WindowAdapter 是一个接口 学生的答案: C 标准答案: C 该题分数:4.0 学生得分: 4.0 分 9. 在基于 Swing 的图形用户界面设计中,面板属 ...
- 用python模拟多人聊天服务器以及客户端(带图形化界面)
所用python的知识点: 网络编程:socket 多线程:threading 图形化编程:tkinter 首先要模拟出一个服务器,以供客户端连接,注意这里的要用死循环,要让服务区一直处于开放的状态 ...
- centos运行java图形化界面_CentOS设置默认启动命令行(不启动图形界面)
CentOS中如何进入图形界面和文字界面,Linux真正的服务器是不会运行图形化界面的,怎么样才能在不卸载桌面的前提下开机直接进入命令界面呢?(我安装的是CentOS 6.5)下面就简单介绍以下: 一 ...
- java界面化_java怎么实现图形化界面
展开全部 java图形化界面还62616964757a686964616fe78988e69d8331333363373232是有很多内容要学习的,可以参考 如下实例:public class Tes ...
- Java图形化界面设计——容器(JFrame)
Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...
- Java图形化界面编程之——AWT
目录 1.AWT简介 2.AWT继承体系 3.Container容器 3.1.Container继承体系 3.2.常用API 3.2.1.Component的常用方法 3.2.2.Container的 ...
- java图形化界面(GUI)
java图形化界面(GUI) 一.AWT编程(抽象窗口工具集) 1.AWT继承体系 2.Container容器 2.1 Container继承体系 2.2 常见API 2.3 容器演示 2.3.1 w ...
最新文章
- 动画产业基础学习教程 Rad How to Class – Animation Industry Fundamentals
- 高效管理 Elasticsearch 中基于时间的索引——本质是在利用滚动模式做数据的冷热分离,热索引可以用ssd...
- Servlet的体系结构	|| Servlet相关配置
- java 百亿计算器_设计一个一百亿的计算器
- 【PHP-FPM】配置,优化性能
- mysql 当前记录集不支持书签_存储过程 分页。当前记录集不支持书签。这可能是提供程序或选定的游标类型的限制。...
- 电脑所有程序里有不一样颜色_12个好玩的电脑屏保,让你成为别人眼中最靓的仔。...
- BBIAB的完整形式是什么?
- RSA加密算法简单分析
- nfs服务器_Kubernetes集群下部署NFS持久存储
- 和宝塔可以同时安装吗_服用钙拮抗剂可以同时补钙吗
- Windows 8连接*** 691错误解决办法
- mysql ssl编译_centos编译安装配置支持ssl加密的mysql replication
- Windows Phone 开发【MSDN参考文档 目录】
- 非线性系统的神经网络控制(常用介绍)--理论
- WordPress优化教程让WordPress打开速度更快
- 谷歌负载均衡Maglev实现简析
- Docker-docker-compose学习笔记(yaml,实战)
- android补间动画有哪几种,Android补间动画、属性动画 常用功能总结
- 刺沙冰雪高爆版辅助多开方案
热门文章
- 【Linux 】内核签名(签名内核模块)、linux 驱动签名、安装特定版本的 kernel-devel
- 智慧园区整体智能化管理平台规划方案
- 智能变电站测试关键技术
- tnpm的插件及使用
- 产品上新需要注意什么 总结的思维导图分享给大家
- npm link使用
- Visual Studio 2013运行C/C++程序
- Rust FFI 编程 - Bindgen 工具介绍
- Elasticsearch错误 “low disk watermark [85%]”或“high disk watermark [90%]”
- 立创商城的元器件库导入AD16(导入自己的库)