📄 私聊界面.java
字号:
/*
* 私聊界面.java
*
* Created on 2007年5月5日, 下午5:08
*/
package 客户端程序包;
import java.applet.Applet;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import java.net.*;
import java.util.Date;
import java.util.StringTokenizer;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import java.applet.AudioClip;
/**
*
* @author 王绿春 南昌大学软件学院045班
*/
public class 私聊界面 extends javax.swing.JFrame implements Runnable{
String FMessage=null;
Socket ClientSocket=null;
String From=null;
String QQNumber=null;
String NickN=null;
private int result;
/** Creates new form 私聊界面 */
public 私聊界面(Socket client_socket,String from,String Nick,String QQNum) {
initComponents();
ClientSocket=client_socket;
System.out.println("私聊界面的SOCKET:"+ClientSocket);
From=from;
NickN=Nick;
QQNumber=QQNum;
int result=0;
this.setTitle("与"+NickN+"聊天中");
//提示框.setText("你正在和"+From+"聊天中...");
this.setBounds(450,220,400,400);
//聊天信息框.setEditable(false);
this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
this.聊天信息框.setSelectedTextColor(Color.BLUE);
this.聊天信息框.setColumns(33);
this.聊天信息框.setLineWrap(true);
this.发送信息框.setColumns(33);
this.发送信息框.setLineWrap(true);
this.发送信息框.setSelectedTextColor(Color.BLUE);
}
public static String FindNickName(String number){
String Number=number;
String Nic=number;
try{
StringTokenizer St=new StringTokenizer(好友界面.Friend,"#");
while(St.hasMoreTokens()){
String s=St.nextToken();
String Num=s.substring(1,10);
if(Num.equals(Number)){
Nic=s.substring(10);
}
}
}catch(NullPointerException e){
}
return Nic;
}
public void run(){
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
好友界面.InforList.RemoveMember(From);
System.out.println("运行了这里!");
dispose();
}
});
while(true){
int i=0;
for(i=0;i<好友界面.InforList.GetLength();i++){
//System.out.println(好友界面.InforList.GetMember(i).GetSender());
//System.out.println(i);
//System.out.println(好友界面.InforList.GetLength());
//System.out.println("adf"+好友界面.InforList.GetMember(i).GetMessage());
if(好友界面.InforList.GetMember(i).GetSender().equals(From)){
if(!好友界面.InforList.GetMember(i).GetMessage().equals("")){
String Infor=好友界面.InforList.GetMember(i).GetMessage();
String TimLen=Infor.substring(0,2);
int TimeLength=Integer.valueOf(TimLen);
System.out.println("长度:"+TimeLength);
System.out.println("消息是:"+Infor);
聊天信息框.append(" "+FindNickName(From)+" "+Infor.substring(2,TimeLength+2)+"\n"+" "+Infor.substring(2+TimeLength)+"\n");
好友界面.InforList.GetMember(i).SetMessage("");
break;
}
//else{
// break;
// }
}
}
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
聊天信息框 = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
发送信息框 = new javax.swing.JTextArea();
ChatRecord = new javax.swing.JButton();
Send = new javax.swing.JButton();
SendFile = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
聊天信息框.setColumns(20);
聊天信息框.setEditable(false);
聊天信息框.setLineWrap(true);
聊天信息框.setRows(5);
聊天信息框.setWrapStyleWord(true);
jScrollPane1.setViewportView(聊天信息框);
发送信息框.setColumns(20);
发送信息框.setRows(5);
jScrollPane2.setViewportView(发送信息框);
ChatRecord.setText("\u804a\u5929\u8bb0\u5f55");
ChatRecord.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
ChatRecordMouseClicked(evt);
}
});
Send.setText("\u53d1\u9001");
Send.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
SendMouseClicked(evt);
}
});
SendFile.setText("\u4f20\u8f93\u6587\u4ef6");
SendFile.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
SendFileMouseClicked(evt);
}
});
org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1Layout.createSequentialGroup()
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1Layout.createSequentialGroup()
.add(10, 10, 10)
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1Layout.createSequentialGroup()
.add(ChatRecord, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 97, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(SendFile, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 91, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 70, Short.MAX_VALUE)
.add(Send, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 83, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 347, Short.MAX_VALUE)))
.add(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 347, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1Layout.createSequentialGroup()
.add(21, 21, 21)
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 156, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 26, Short.MAX_VALUE)
.add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(18, 18, 18)
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(Send)
.add(SendFile)
.add(ChatRecord))
.addContainerGap())
);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void SendFileMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_SendFileMouseClicked
// TODO 将在此处添加您的处理代码:
TransFile=new Thread() {
public void run() {
fc = new JFileChooser();
result = fc.showOpenDialog(私聊界面.this);
File file = fc.getSelectedFile();
if(file!=null && result==JFileChooser.APPROVE_OPTION) {
fileName = file.getAbsolutePath();
System.out.println("You chose to open this file: " +fileName);
try{
File file1=new File(fileName);
FileInputStream fos=new FileInputStream(file1);
//创建网络服务器接受客户请求
ServerSocket ss=new ServerSocket(7777);
Socket client=ss.accept();
//创建网络输出流并提供数据包装器
OutputStream netOut=client.getOutputStream();
OutputStream doc=new DataOutputStream(new BufferedOutputStream(netOut));
//创建文件读取缓冲区
byte[] buf=new byte[2048];
int num=fos.read(buf);
while(num!=(-1)) { //是否读完文件
doc.write(buf,0,num);//把文件数据写出网络缓冲区
doc.flush();//刷新缓冲区把数据写往客户端
num=fos.read(buf);//继续从文件中读取数据
}
fos.close();
doc.close();
}
catch(Exception ex){
System.out.println(ex);
}
}
if(result == JFileChooser.CANCEL_OPTION){
}
}
};
TransFile.start();
String Port="7777";
String Address=ClientSocket.getInetAddress().toString().substring(1);
System.out.println(From+Port+Address);
new SendAndReceive(ClientSocket,"TransFile"+From+Port+Address).SendMessage();
}//GEN-LAST:event_SendFileMouseClicked
private void ChatRecordMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_ChatRecordMouseClicked
// TODO 将在此处添加您的处理代码:
String ChatRecord=null;
聊天记录 ChatRecordFrame=new 聊天记录(ClientSocket,QQNumber,From);
ChatRecordFrame.setVisible(true);
new Thread(ChatRecordFrame).start();
}//GEN-LAST:event_ChatRecordMouseClicked
private void SendMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_SendMouseClicked
// TODO 将在此处添加您的处理代码:
String Message=发送信息框.getText();
System.out.println(Message);
Date date = new Date();
String Time = date.toLocaleString();
//String Time=date.toString();
//String Time=date.getYear()+"-"+date.getMonth()+"-"+date.getDay()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
//System.out.println("时间长度"+Time.length());
//int Time=date.getMonth();
System.out.println("系统时间:"+Time);
聊天信息框.append(" "+FindNickName(QQNumber)+" "+Time+"\n"+" "+Message+"\n");
发送信息框.setText("");
PrintWriter ClientOut;
try {
ClientOut = new PrintWriter(ClientSocket.getOutputStream());
ClientOut.println("1"+From+QQNumber+Time.length()+Time+Message);
ClientOut.flush();
} catch (IOException ex) {
ex.printStackTrace();
}
}//GEN-LAST:event_SendMouseClicked
/**
* @param args the command line arguments
*/
private void CloseClicked(java.awt.event.MouseEvent evt){
}
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.JButton ChatRecord;
private javax.swing.JButton Send;
private javax.swing.JButton SendFile;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea 发送信息框;
private javax.swing.JTextArea 聊天信息框;
// 变量声明结束//GEN-END:variables
private JFileChooser fc=null;
private String fileName=null;
public static Thread TransFile=null;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -