資源簡介
實現點對點實時聊天 若改進則可以做一個聊天室
代碼片段和文件信息
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)//如果命令是接受??該命令表示答應對方的語
- 上一篇:JAVA實現找回密碼功能詳解。
- 下一篇:mvc模式畫圓JAVA實現
評論
共有 條評論