亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jim.java

?? 照書上做的JIM軟件,不過不知道為什么還不能運行.要是能調出來功能絕對完善
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
		  out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
		  //向服務器端發送刪除好友請求
		    out.println("DELFRIEND");
			out.println(((Friend)myFriends.get(index)).fImNo);
			out.println(myImNo);
			out.println("END");
		  
		  //以下在好友列表框中刪除該好友
 			DefaultListModel mm=(DefaultListModel)jlstFriend.getModel();
 			mm.removeElementAt(index);
 			myFriends.removeElementAt(index);
 		}
 		catch(Exception e1)
 		{
 			e1.printStackTrace();
 		}
 	}
}
 
 //查看好友資料菜單選中
void mnItemInfo_mousePressed(MouseEvent e)
{
	int index;
	index=jlstFriend.getSelectedIndex();  //得到好友序列      
	if(index!=-1)  
	{
		
		//生成好友對象
		Friend myFriend=(Friend)myFriends.get(index);
		ShowFriendInfo showFriendInfoDlg=new ShowFriendInfo(this,myFriend);
		showFriendInfoDlg.setLocationRelativeTo(this);
		shoeFriendInfoDlg.show();
	}
}

//以下為線程的線程體,無限監聽好友發來的消息
public void run()
{
	while(true)
	{
		try
		{
			byte[] data;
			//將接收數據緩沖區數據置空
			for(int i=0;i<512;i++)receiveBuf[i]=0;
			//接收數據
			receiveSocket.receive(receivePacket);
			data=receivePacket.getData();
			String messageStr=new String(data,0,receivePacket.getLength());
			messageStr.trim();
			//將接收到數據轉換成消息格式
			Message msg=new Message(messageStr);
			
			//以下為在好友列表中查找發來消息的好友是誰,在列表中的位置
			int index=-1;
			for(int i=0;i<myFriends.size();i++)
			{
				if(msg.formImNo==((Friend)myFriends.get(i)).fImNo)
				{
					index=i;
					break;
				}
			}
			
			//若在列表中沒有找到,則是陌生人
			if(index==-1)     //陌生人
			{
				//顯示一條消息。告訴用戶有陌生人要與你通訊
				if(JOptionPane.showConfirmDialog(this,"有陌生人"+"["+msg.fromImNo+"]"+"要與你聊天。搭理嗎?","提示信息",JOptionPane.YES_NO_OPTION)
				==JOptionPane.NO_OPTION)
				{
					//用戶選擇不理睬
					continue;
				}
				else
				{
					//選擇理睬,則將陌生人加入好友,在通訊
					//先生成好友類對象
					AddFriend addFriend=new AddFriend(this,msg.fromImNo);
					addFriend.processAddFriend();
					index=myFriends.size()-1;    //新加好友在列表中的位置
				}
			}
			
			//如果有好友發來的消息是告訴我他上線了,則將其頭像變彩色
			if(msg.commandWord.equals("ONLINE"))
			{
				if(index!=-1)
				{
					((Friend)myFriends.get(index)).fRPort=Integer.parseInt(msg.messageString.trim());
					DefaultListModel mm=(DefaultListModel)jlstFriend.getModel();
					mm.setElementAt(new Object[]{((Friend)myFriends.get(index)).
			fNickName,new ImageIcon("face/"+faceOnline[((Friend)myFriends.get(index)).
		fFace-1])},index);
		((Friend)myFriends.get(index)).fOnline=1;
	}
}

//如果有好友發來的消息是告訴我他離線了,則將其頭像變灰色
else if(msg.commandWord.equals("OFFLINE"))
{
	if(index!=-1)
	{
		DefaultListModel mm=(DefaultListModel)jlstFriend.getModel();
		mm.setElementAt(new Object[]{((Friend)myFriends.get(index)).
	  fNickName,new ImageIcon("face/"+faceOffline[((Friend)myFriends.get(index)).
		fFace-1])},index);
		((Friend)myFriends.get(index)).fOnline=0;
	}
}

//如果有好友發來的是普通消息,則將其加到通訊記錄中
else if(msg.commandWord.equals("MESSAGE"))
{
	Calendar cal;//創建日歷對象
	String msgStr=" ",str;
	//通過類的靜態方法得到類的成員,這里得到的時間是當前的時間
	cal=Calendar.getInstance();
	//下面得到當前時間中的年月日時分秒
	str=cal.get(Calendar.YEAR)+"年";
	Str+=(cal.get(Calendar.MONTH)+1)+"月";
	Str+=cal.get(Calendar.DATE)+"日";
	Str+=cal.get(Calendar.HOUR_OF_DAY)+"時";
    Str+=cal.get(Calendar.MINUTE)+"分";
    Str+= cal.get(Calendar.SECOND)+"秒";
  //將消息拼成如下格式;
  //第1行:[好友昵稱]XXXX年XX月XX月XX日XX時XX分XX秒說:
  //第2行:接收到的具體內容
  msgStr+="\n["+((Friend)myFriends.get(index)).fNickName+"]";
  msgStr+=str;
  msgStr+="說:\n";
  msgStr+=msg.messageString;
  //將消息加到該好鈾的通訊記錄中
  ((Friend)myFriends.get(index)).messageLog+=msgStr;
  //若與該好友的通訊窗口是打開的,則同時加到通訊記錄文本域控件中
  if(((Friend)myFriends.get(index)).isShowDlg)
  {
  	((Friend)myFriends.get(index)).myDialog.jtaMsgLog.append(msgStr);
       }
    };
   }catch(IOException ex){ex.printStackTrace();}
  }
 }
}


//MessageDialog類
//該類為客戶收發消息的界面類,用于顯示客戶端之間通訊的界面,處理客戶之間收發消息。代碼如下:
class MessageDialog extends JDialog    //用戶收發消息類
{
	int myImNo;                        //用戶自己的JIM號
	
	Friend myFriend;                   //當前好友對象
	JPanel jpBottom=new JPanel();      //界面底層面板
	JScrollPane jspMsgLog,jspSendMsg;   //通訊記錄和發消息的滾動面板
	JTextArea jtaMsgLog=new JTextArea();  //通訊記錄文本域
	JTextArea jtaSendMsg=new JTextArea(); //發送消息的文本域
	JButton jbSend=new JButton();         //"發送"按鈕
	
	public MessageDialog(int myImNo,Friend myFriend)
	{
		this.myImNo=myImNo;
		this.myFriend=myFriend;
		this.setTitle("與"+myFriend.fNickName+"的聊天記錄");
		jpBottom.setLayout(null);
		jpBottom.setBounds(0,0,400,500);
		this.getContentPane().setLayout(null);
		this.getContentPane().add(jpBottom,null);
		jtaMsgLog.setEditable(false);
		//將通訊記錄文本域放在通訊記錄滾動面板上
		jspMsgLog=new JcrollPane(jtaMsgLog);
		//將與當前好友的通訊記錄顯示在通訊記錄文本域上
		jtaMsgLog.setText(myFriend.messageLog);
		jspMsgLog.setBounds(6,6,380,400);
		//將發送消息的文本域放在發送消息的滾動面板上
		jspSendMsg=new JScrollPane(jtaSendMsg);
		jspSendMsg.setText(6,410,280,45);
		jbSend.setText("發送");
		jbSend.setBounds(295,415,90,30);
		//將通訊記錄和發送消息的滾動面板、發送按鈕加在最底層面板上
		jpBottom.add(jspMsgLog,null);
		jpBottom.add(jspSendMsg,null);
        jpBottom.add(jbSend,null);
        jbSend.addMouseListener(new java.awt.event.MouseAdapter(){
    	public void mouseClicked(MouseEvent e){
    		jbSend_mouseClicked(e);
    	}
    });
    
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    this.setSize(400,500);
    this.setResizable(false);
  }
  
  void jbSend_mouseClickded(MouseEvent e)
  {
  	try 
  	{
  		Calendar cal;//創建日歷對象
	    String msgStr=" ",str;
	    //通過類的靜態方法得到類的成員,這里得到的時間是當前的時間
	    cal=Calendar.getInstance();
	    //下面得到當前時間中的年月日時分秒
	    str=cal.get(Calendar.YEAR)+"年";
	    Str+=(cal.get(Calendar.MONTH)+1)+"月";
	    Str+=cal.get(Calendar.DATE)+"日";
	    Str+=cal.get(Calendar.HOUR_OF_DAY)+"時";
        Str+=cal.get(Calendar.MINUTE)+"分";
        Str+=cal.get(Calendar.SECOND)+"秒";
      //拼接用戶自己說話的內容。兩行:
       //第1行:[我]XXXX年XX月XX月XX日XX時XX分XX秒說:
       //第2行:具體的內容
      msgStr+="\n[我]";
      msgStr+=str;
      msgStr+="說:\n";
      msgStr+=jtaSendMsg.getText().trim();
      //將用戶說話的內容加到通訊記錄中,并加在通訊記錄文本域中
      myFriend.messageLog+=msgStr;
      jtaMsgLog.append(msgStr);
      
      
      DatagramPacket sendPacket;
      DatagramSocket sendSocket;
      int sendPort=5000;    //用戶的發送端口
      //在指定創建用戶的發送數據報的套接字
      sendSocket=new DatagramSocket(sendPort);
      //生成用戶消息
      Message msg=new Message(myImNo,myFriend.fImNo,"MESSAGE",
      jtaSendMsg.getText().trim());
      //將用戶消息轉換成發送的字節數據
      byte[] data;
      data=msg.returnMessage().getBytes();
      //創建用戶數據報
      sendPacket=new DatagramPacket(data,data.length,InetAddress.getByName(myFriend.fIp.trim()),myFriend.fRPort);
      //將消息發送出去
      sendSocket.send(sendPacket);
      sendSocket.close();
      //將發送消息文本編輯框內容設置為空
      jtaSendMsg.setText(" ");
    }
    catch(Exception e1)
    {
    	e1.printStackTrace();
    }
  }
  
  protected void processWindowEvent(WindowEvent e)
  {
  	super.processWindowEvent(e);
  	if(e.getID()==WindowEvent.WINDOW_CLOSING)
  	{
  		//將當前好友對象的屬性---通訊窗口是否顯示標志設置為false
  		myFriend.isShowDlg=false;
  	}
  }
}

//客戶相通訊的消息類
class Message
{
	int fromImNo=-1;        //發送方JIM號
	int toImNo=-1;         //接收方JIM號
	String commandWord=" ";   //命令字
	String messageString=" ";  //消息內容
	
	//構造方法1:類中的屬性變量由單個變量傳遞值來賦值
	public Message(int fromImNo,int toImNo,String commandWord,String messageString)
	{
		this.fromImNo=fromImNo;
		this.toImNo=toImNo;
		this.commandWord=commandWord;
		this.messageString=messageString;
	}
	
	
	//構造方法2:類中的屬性變量值從一條接收到消息中提取
	//接收到的消息格式為:發送方JIM號#接收方JIM號#消息命令字:詳細內容
	public Message(String message)
	{
		int inx;
		String tmpStr;
		tmpStr=message.trim();                               //去掉空格
		inx=tmpStr.indexOf("#");                             //找第個#號
		fromImNo=Integer.parseInt(tmpStr.substring(0,inx));  //第1個#號前為發送方
		tmpStr=tmpStr.substring(inx+1);
		inx=tmpStr.indexOf("#");                             //找第2個#號
		toImNo=Integer.parseInt(tmpStr.substring(0,inx));    //第2個#號前為接收方
		tmpStr=tmpStr.indexOf(":");                          //找":"號
		commandWord=tmpStr.substring(0,inx);                 //":"號前為命令字
		messageString=tmpStr.substring(inx+1);               //":"號后為信息內容
	}
	

//將類的給定成員變量值構造成一條將要發送的消息
public String returnMessage()
{
	return
	String.valueOf(fromImNo)+"#"+String.valueOf(toImNo)+"#"+commandWord+
	":"+messageString;
   }
 }

//Friend類
//該類為好友類,用于定義好友的詳細信息。該類代碼如下:
//好友類
class Friend
{
	//好友詳細信息
	public String fNickName,fIp,fEmail,fHomePage,fPhone,fResume;
	public int fImNo,fRPort,fFace,fSex,fAge,fOline;
	String messageLog=" ";               //與該好友的通訊記錄
	boolean isShowDlg=false;             //與該好友的通訊窗口是否打開標志
	MessageDialog myDialog=null;         //與該好友進行收發消息的窗口
	//構造方法
	public Friend(String fNickName,String fIp,String fEMail,String fHomePage,String fPhone,String fResume,int fImNo,int fRPort,int fFace,int fSex,int fAge,int fOnline)
	{
		this.fNickName=fNickName;
		this.fImNo=fImNo;
		this.fIp=fIp;
		this.fRPort=fRPort;
		this.fEMail=fEMail;
		this.fHomePage=fHomePage;
		this.fPhone=fPhone;
		this.fResume=fResume;
		this.fFace=fFace;
		this.fSex=fSex;
		this.fAge=fAge;
		this.fOnline=fOnline;
	}
	
	
	//顯示與該好友的收發訊息窗口
	public void showMessageDlg(JimWin jimWin)
	{
		//將與該好友的通訊窗口是否打開標志設置為true
		isShowDlg=true;
		//生成通訊窗口
		if(this.myDialog==null)
		{
			MessageDialog myDlg=new MessageDialog(jimWin.myImNo,this);
			this.myDialog=myDlg;                   //該窗口的句柄
			myDlg.setLocationRelativeTo(jimWin);
		}
		this.myDialog.show();                    //顯示通訊窗口
	}
}


//ShowFriendInfo 類
//用于顯示好友詳細信息的界面類。該類代碼如下:
//顯示好友詳細信息類
class ShowFriendInfo extends JDialog
{
	Friend myFriend;                      //好友對象
	JPanel jpBottom=new JPanel();
	JTextField jtNickName=new JTextField();
	JLabel jlNickName=new JLabel();
	JLabel jlImNo=new JLabel();
	JTextField jtfImNo=new JTextField();
	JComboBox jcbFace=new JComboBox();
	JLabel jlSex=new JLabel();
	JComboBox jcbSex=new JComboBox();
	JLabel jlAge=new JLabel();
	JTextField jtfAge=new JTextField();
	JLabel jlPhone=new JLabel();
    JTextField jtfPhone=new JTextField();
	JTextField jtfEMail=new JTextField();
    JLabel jlEmail=new JLabel();	
	JLabel jlHomePage=new JLabel();	
 	JTextField jtfHomePage=new JTextField();		 	
 	JLabel jlResume=new JLabel();			
 	JTextPane jtpResume=new JTextPane();
 	JButton jbOK=new JButton();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区鲁丝不卡| 99久久久精品| 色菇凉天天综合网| 欧美大片拔萝卜| 亚洲一线二线三线久久久| 国内外精品视频| 欧美美女视频在线观看| 国产精品久久免费看| 韩国三级在线一区| 3d成人h动漫网站入口| 樱花影视一区二区| 99视频一区二区| 国产精品天美传媒沈樵| 国产伦精品一区二区三区免费迷| 欧美日韩精品欧美日韩精品| 中文字幕亚洲综合久久菠萝蜜| 久久精品国产久精国产爱| 欧美美女喷水视频| 午夜激情一区二区三区| 欧美在线观看视频在线| 亚洲制服丝袜av| 91极品视觉盛宴| 亚洲一区二区综合| 欧美亚洲国产怡红院影院| 亚洲免费av观看| 国产午夜精品一区二区三区视频 | 成人免费在线播放视频| 国内一区二区视频| 久久综合狠狠综合久久综合88| 日日摸夜夜添夜夜添国产精品 | 肉色丝袜一区二区| 欧洲国内综合视频| 亚洲一二三专区| 欧美日韩一本到| 日本 国产 欧美色综合| 日韩三级视频中文字幕| 麻豆国产91在线播放| 精品国产123| 国产精品影视天天线| 中文字幕免费在线观看视频一区| 国产91精品在线观看| 中文字幕一区免费在线观看| 色综合久久久久综合体| 亚洲成人动漫在线免费观看| 日韩欧美在线观看一区二区三区| 麻豆精品一区二区综合av| 精品国产123| 91在线高清观看| 亚洲一区二区三区在线播放| 欧美一卡在线观看| 国产成人av一区二区三区在线 | 国产视频一区二区在线| 高清成人在线观看| 亚洲欧美国产毛片在线| 欧美私模裸体表演在线观看| 日韩经典一区二区| 国产三级欧美三级日产三级99| 波多野洁衣一区| 性久久久久久久| 久久久久久久久久久久电影| 99久久国产免费看| 首页综合国产亚洲丝袜| 国产女人18水真多18精品一级做 | 一区二区三区欧美在线观看| 欧美日韩一区视频| 国产91在线观看| 亚州成人在线电影| 中文字幕免费观看一区| 欧美吻胸吃奶大尺度电影 | 国产欧美一区二区三区在线老狼| 91捆绑美女网站| 韩国成人福利片在线播放| 一区二区不卡在线视频 午夜欧美不卡在 | 老司机免费视频一区二区| 美女任你摸久久| 亚洲免费观看高清完整| 精品福利一区二区三区| 欧美视频一区二区| 成人精品gif动图一区| 三级影片在线观看欧美日韩一区二区| 国产欧美一区二区精品仙草咪| 欧美三级电影一区| 成人蜜臀av电影| 狠狠网亚洲精品| 亚洲成人激情综合网| 亚洲欧洲综合另类| 国产欧美一区二区精品性色| 日韩午夜在线观看视频| 色婷婷狠狠综合| av不卡在线播放| 国产91对白在线观看九色| 日本亚洲天堂网| 亚洲午夜三级在线| 亚洲专区一二三| 亚洲免费观看高清完整| 亚洲视频小说图片| 欧美极品xxx| 国产亚洲一区二区三区四区| 欧美一区二区三区影视| 欧美精品乱码久久久久久| 色综合av在线| 一本到三区不卡视频| 91免费版pro下载短视频| 大陆成人av片| 成人午夜又粗又硬又大| 丁香网亚洲国际| 成人手机电影网| 成人免费观看视频| 99精品久久只有精品| 99这里只有久久精品视频| eeuss鲁片一区二区三区在线观看| 国产成人精品免费视频网站| 国产成人综合网| 成人晚上爱看视频| 91麻豆精品秘密| 在线观看三级视频欧美| 欧美另类变人与禽xxxxx| 日韩亚洲欧美高清| 久久蜜臀精品av| 亚洲欧洲性图库| 国产精品久久久久永久免费观看| ...xxx性欧美| 一区二区三区毛片| 日韩电影在线免费观看| 青青国产91久久久久久| 极品少妇一区二区三区精品视频| 国产一区二区三区在线看麻豆| 国产成人综合在线观看| 波多野结衣欧美| 欧美三级电影在线观看| 日韩精品一区二区三区四区视频| 久久综合久久综合九色| 国产精品久久久久精k8| 亚洲大尺度视频在线观看| 老司机午夜精品| www.亚洲人| 欧美一区三区四区| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲mv在线观看| 激情欧美日韩一区二区| 不卡一卡二卡三乱码免费网站| 91视视频在线观看入口直接观看www| 欧美亚洲高清一区| 精品国产123| 国产乱码一区二区三区| 91啪九色porn原创视频在线观看| 欧美色综合网站| 久久久精品免费观看| 亚洲精品免费视频| 国产综合色在线视频区| 一本久久a久久免费精品不卡| 欧美一区二区三区啪啪| 国产精品久久久久天堂| 免费高清不卡av| 91色九色蝌蚪| 久久精品一区二区三区av| 亚洲一二三区在线观看| 成人综合在线观看| 日韩欧美专区在线| 一区二区三区在线视频观看58| 精品一区二区三区蜜桃| 91传媒视频在线播放| 久久蜜臀中文字幕| 日本欧美在线看| 色综合久久综合中文综合网| 久久久久久久久一| 美女视频黄久久| 欧美日韩成人在线一区| 日韩一区在线免费观看| 精品一区二区三区影院在线午夜| 在线观看日韩电影| 国产精品的网站| 国产一区二区三区免费看| 这里只有精品视频在线观看| 亚洲精品欧美激情| 99国产精品国产精品久久| 久久综合色一综合色88| 另类小说一区二区三区| 欧美福利一区二区| 亚洲免费观看高清在线观看| 成人性生交大片免费看视频在线| 精品国产凹凸成av人网站| 午夜精品一区二区三区三上悠亚 | 日韩欧美色电影| 亚洲va欧美va人人爽午夜| 色94色欧美sute亚洲线路一ni| 国产精品乱人伦| 成人一级黄色片| 国产精品亲子伦对白| 国产成人自拍网| 欧美国产1区2区| 高清在线不卡av| 国产精品久久久久一区| 成人国产精品免费观看视频| 国产婷婷色一区二区三区在线| 国产精品亚洲专一区二区三区 | 日本不卡免费在线视频| 亚洲欧美日韩综合aⅴ视频| www.久久精品| 亚洲男人天堂一区|