当前位置:首页 > java简易聊天 界面 - 图文
安徽大学计算机实验教学中心 1 学号 实验日期 专业 计算机科学与技术姓名 2017/10/29 教师签字 成绩
实验报告
【实验名称】 第七章 图形用户界面设计——聊天软件 【实验目的】
1.学习java图形用户界面设计 2.学习java事件处理
【实验原理】
1.Java程序设计基本原理 2.面向对象程序设计基本原理
【实验内容】
实验内容: 根据已给出的聊天软件的基础例子程序,设计一个完整的聊天软件。 实验要求: 1、
两个人互相合作完成聊天软件的设计;
安徽大学计算机实验教学中心 2
在右图的基础上,添加2个文本框,用于输入对方的IP地址和端口号; 在聊天记录显示区,给聊天双方添加姓名;
3添加键盘事件处理,按下键盘的ENTER键,实现信息发送功能
提示:可以增加发送文本框组件的键盘响应事件处理,在键盘事件处理方法中,发送数据。方法如下: 1、 实现键盘响应接口 classMyExtendsJFrame Runnable,KeyListener{
2、 重写键盘响应的三个事件keyPressedkeyReleasedkeyTyped
例如: public void keyPressed(KeyEvent e) { if(e.getKeyCode()==KeyEvent.VK_ENTER) {发送数据} }
3、 添加文本框组件和键盘响应事件的关联 按键响应举例
buttonSend.addActionListener(new ActionListener() // 插入文字的事件 {
public void actionPerformed(ActionEvent e) {
byte data[] = textSend.getText().getBytes();// 获取发送文本框字符
extends JFrame implements ActionListener ,
//判断是否是enter健,如果是则发送
安徽大学计算机实验教学中心 3 String addnum = IP.getText(); try
{
InetAddress address = InetAddress.getByName(addnum);// 设置目的IP地址 DatagramPacketSendPacket = new DatagramPacket(data, data.length, address, 2013); DatagramSocket Post = new DatagramSocket();// 创建UDP发送对象 Post.send(SendPacket); // 发送数据
String s9=new String(SendPacket.getData(),0,SendPacket.getLength()); //读取数据包
SimpleDateFormatdf = new SimpleDateFormat(\设置日期格式 insert(s9,mystyle()); } catch (Exception e1) { }
textSend.setText(\ } });
重写键盘响应
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER) {
byte data[] = textSend.getText().getBytes();// 获取发送文本框字符
String addnum = IP.getText(); try
{
InetAddress address = InetAddress.getByName(addnum);// 设置目的IP地址
//InetAddress address=InetAddress.getByName(\设置目的IP地址
DatagramPacketSendPacket = new DatagramPacket(data, data.length, address, 2013); // 基于上一步的目标地址,创建UDP数据包,目标端口为2013
DatagramSocket Post = new DatagramSocket();// 创建UDP发送对象 Post.send(SendPacket); // 发送数据
String s9=new String(SendPacket.getData(),0,SendPacket.getLength()); //读取数据包 SimpleDateFormatdf = new SimpleDateFormat(\设置日期格式
insert(s9,mystyle()); } catch (Exception e1)
安徽大学计算机实验教学中心 4 { }
textSend.setText(\ } }
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
附加功能:设置字体及分栏
public SimpleAttributeSetmystyle()//自己发出的字体颜色格式,在右边 {
SimpleAttributeSetmySet = new SimpleAttributeSet(); StyleConstants.setForeground(mySet, Color.red);
StyleConstants.setAlignment(mySet, StyleConstants.ALIGN_RIGHT); StyleConstants.setUnderline(mySet, true);
StyleConstants.setFontFamily(mySet, \StyleConstants.setFontSize(mySet, 24); returnmySet;
}
public SimpleAttributeSethisstyle()//对方发出的字体颜色格式,在右边
{
SimpleAttributeSethisSet = new SimpleAttributeSet(); StyleConstants.setForeground(hisSet, Color.blue);
StyleConstants.setAlignment(hisSet, StyleConstants.ALIGN_LEFT); StyleConstants.setUnderline(hisSet, true);
StyleConstants.setFontFamily(hisSet, \StyleConstants.setFontSize(hisSet, 24); returnhisSet; }
插入文本到区域
private void insert(String str,SimpleAttributeSet set)//添加自己的名字 {
try // 插入文本 {
SimpleDateFormatdf = new SimpleDateFormat(\设置日期格式
str = \doc.insertString(doc.getLength(), str + \
共分享92篇相关文档