• 大小: 13KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: Java
  • 标签: JAVA  

资源简介

实现点对点实时聊天 若改进则可以做一个聊天室

资源截图

代码片段和文件信息

import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.net.*; 
import java.text.DecimalFormat;
import javax.sound.sampled.*;

interface Module
{
TextArea display=new TextArea(1265);//这是一个文本域用来显示聊天内容
TextArea write=new TextArea(865);//用来输入聊天内容的文本域
frame f=new frame(“聊天工具“);//框架
Button send=new Button(“发送“);//发送按钮 用来发送消息
Button close=new Button(“关闭“);//关闭按钮 用来关闭对话框
Button talk=new Button(“语音聊天“);//语言聊天按钮 用来语音聊天
Button accept=new Button(“接受“);//接受按钮 用来接受对方语音聊天
    Button reject=new Button(“拒绝“);//拒绝按钮 用来拒绝对方的语音聊天
String IP=“127.0.0.0“;//IP 地址 这是对方的IP 在程序运行的时候要进行修改
Capture cap=new Capture(IP);//Capture 是一个捕获声音并且将声音发送到目的IP地址的类
    Playback player=new Playback();//Playback 是一个接受声音并且播放声音的类
}



public class Windows extends frame implements ActionListenerModule
{

static boolean begin=true;
Windows()
{
super(“聊天工具“);
    f.setSize(500500);//设置框架大小为长500 宽500
    f.setLocation(300300);
    f.setFont(new Font(“Arial“Font.PLAIN12));//设置字体 为Font.PLAIN 大小为12
    f.setLayout(new FlowLayout());//布局类型设置为FlowLayout
    display.setEditable(false);//将显示聊天内容的框架设置为不可编辑
    f.add(display);//将相应的控件添加到框架中去
    f.add(write);
    f.add(send);        
    f.add(talk);
    f.add(close);
    send.addActionListener(this);//下面几句话都是给控件加上监听器
    close.addActionListener(this);
    talk.addActionListener(this);
    accept.addActionListener(this);
    reject.addActionListener(this);
    f.show();//将框架显示出来
}




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


new Windows();
new RecieveThread().start();//接受对方信息的线程  这个线程接受的都是聊天的信息
new TalkReceiveRequestThread().start(); //接受对方一些请求的信息 比如语言聊天 以及拒绝语言聊天的信息


}




public void actionPerformed(ActionEvent e)
{

if(e.getSource()==send)//如果是命令是发送则启动发送线程 并且将要发送的内容添加到display面板中去
{
String s;
    if((write.getText().toString()).equals(““))
{

JOptionPane.showMessageDialog(null“发送的内同不能为空!““注意“JOptionPane.INFORMATION_MESSAGE);//如果发送内容是空的 则禁止发送
}
else
{
display.append(“\n老大:“+(new Date().toString())+“\n“+write.getText());//这是显示当前时间
new SendThread().start();
}


}

if(e.getSource()==close)//如果命令是关闭 则整个程序结束
{

System.exit(0);

}
if(e.getSource()==talk)//如果命令是语音聊天 进行判断 第一次点击该命令的时候是请求语聊  第二次则是关闭语聊
{
if(begin)//如果是第一次 则是请求语聊
{
display.append(“\n正与对方建立连接!“);
talk.setLabel(“关闭语音“);//设置按钮的内容
begin=false;
new TalkRequestThread(“talkstart“).start(); //发出一个语音聊天请求
}
else 
{
display.append(“\n已经断开连接!“);//断开语音聊天 并且发出一个断开请求
talk.setLabel(“语音聊天“);
begin=true;
new TalkRequestThread(“talkended“).start();
cap.stop();//因为要断开语言聊天 则接语音收线程要断开  发送线程也要断开
player.stop();



}
}
if(e.getSource()==accept)//如果命令是接受  该命令表示答应对方的语

评论

共有 条评论