⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jicq.java

📁 用java做的icq,不错的啊!大家看看啊!
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
			for(;e.hasMoreElements();)
			{
				icqid=(IcqID)friend.get((String)e.nextElement());
				icqid.canShow=cell;
				int i=icqid.index;
				if(i>=0&&i<cell)
				{
					icqid.left=10;
					icqid.top=area[0][3]+iconSize*i+offset;
					icqid.right=dm.width-11;
					icqid.bottom=area[0][3]+iconSize*i+iconSize+offset;
				}
				icqid.draw(this);
			}
			
			int x1,y1,x2,y2;
			x1=area[4][0];y1=area[4][1];x2=area[4][2];y2=area[4][3];
			c=g.getColor();
			g.setColor(Color.gray);
			g.drawRect(x1,y1,x2-x1,y2-y1);
			g.setColor(c);
			
			//pastarea=1;currentarea=0;mouseMoved(area[1][0]+1,area[5][1]+1);
		}catch(Exception e){System.out.println("  MainFrame paint() error:"+e);}
	}


	void buildPopupMenu(){
		pm=new PopupMenu();
		MenuItem[] mi=new MenuItem[mis.length];
		for(menuItemIndex=0;menuItemIndex<mis.length;menuItemIndex++){
			mi[menuItemIndex]=new MenuItem(mis[menuItemIndex]);
			mi[menuItemIndex].addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e){processMenu(e.getActionCommand());}});
			pm.add(mi[menuItemIndex]);
			
		}
		add(pm);
		
		modifyPM=new PopupMenu();
		MenuItem[] mi1=new MenuItem[2];
		mi1[0]=new MenuItem(modifymis[0]);
		mi1[0].addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e){processMenu(modifymis[0]);}});
		mi1[1]=new MenuItem(modifymis[1]);
		mi1[1].addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e){processMenu(modifymis[1]);}});
		modifyPM.add(mi1[0]);modifyPM.add(mi1[1]);
		add(modifyPM);
	}
	void processMenu(String txt){
		try{
			//System.out.println("   mis.length="+mis.length);
			if (txt.equals(mis[0]))sendTo();
			if (txt.equals(mis[1]))delFriend();
			if (txt.equals(mis[2])){
				IcqID icqid;
				if(currenticqid.getNick().equals(currenticqid.icqNo)){icqid=getID(currenticqid);repaint();setFriend(icqid.icqNo,icqid);}
				else icqid=currenticqid;
				new SubmitID(icqid,icqid.getNick(),false,false);
			}
			if (txt.equals(mis[3])){
				IcqID icqid=getID(currenticqid);
				if(icqid!=null){setFriend(icqid.icqNo,icqid);repaint();}
				else repaintEvt=true;
			}
			if (txt.equals(mis[5])){sysinfo.bigIcon=true;reSort();repaint();}
			if (txt.equals(mis[6])){sysinfo.bigIcon=false;reSort();repaint();}
			if (txt.equals(mis[7])){if(!seek.isShowing())seek.setVisible(true);else seek.toFront();}
			if (txt.equals(modifymis[0])){IcqID i=getID(myIcqID);if(submitid==null||!submitid.isValid())submitid=new SubmitID(myIcqID,"修改个人资料",true,true);else submitid.toFront();}
			if (txt.equals(modifymis[1])){if(!sysinfo.isShowing())sysinfo.setVisible(true);else sysinfo.toFront();}
		}catch(Exception e){}
	}
	void checkID()
	{
		boolean exitfor=false;
		IcqID icqid=null;
		Enumeration en=friend.keys();
		NEWMSG=false;
		for(;en.hasMoreElements()&&!exitfor;){
			String no=(String)en.nextElement();
			icqid=(IcqID)friend.get(no);
			if(icqid!=null){
				if(icqid.newMsg)NEWMSG=true;	//if have new Msg then let NEWMSG=true;
				if(!icqid.checked){
					icqid=getID(icqid);
					if(icqid!=null){
						icqid.setStranger(myIcqID.icqNo);
						setFriend(no,icqid);
						if(!icqid.isOnline||icqid.index<0||icqid.index>icqid.canShow)repaintEvt=false;
					}
					exitfor=true;
				}	//end if,NoChecked
			}	//end if ,null
		}	//end for
		if(NEWMSG||message.size()>0)changeImg();else {if(!icqShowing)setIconImage(jICQ.icqImage);icqShowing=true;}
	}
	void changeImg()
	{
		int blink=400;
		long thisTime=new Date().getTime();
		Image img=null;
		if(lastShowTime+blink<thisTime&&icqShowing)
		{img=jICQ.mailImage;icqShowing=false;lastShowTime=thisTime;setIconImage(img);}
		if(lastShowTime+blink<thisTime&&!icqShowing)
		{img=jICQ.icqImage;icqShowing=true;lastShowTime=thisTime;setIconImage(img);}
		
	}
	void close()
	{
		try{
			jICQ.exitSystem=true;
			System.out.println("  end jICQ.");
			setVisible(false);
			
			String cmd="LOGOUT icqNo:"+myIcqID.icqNo;
			Sender s=onlineMon=new Sender(cmd);
			s.start();
			Result r=s.getReturn();
			
			jICQ.logonOK=false;
			sysinfo.write();
			//udpRSocket.close();
			dispose();
		}catch(Exception e){System.out.println("   MainFrame.close() error:"+e);}
		System.exit(0);
	}
	void exitMsg(String s)
	{
		diaFrame=new Dialog(new Frame(),"jICQ:严重错误:",true);
		diaFrame.setResizable(false);
		
		diaFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){diaFrame.dispose();close();}});
		diaFrame.setLayout(new FlowLayout(FlowLayout.CENTER));
		diaFrame.setBounds(200,150,300,200);
		TextArea ta=new TextArea(s,8,30,TextArea.SCROLLBARS_VERTICAL_ONLY);
		ta.setEditable(false);
		diaFrame.add(ta);
		diaFrame.setBackground(new Color(13947080)) ;
		Button b=new Button("确定");
		b.addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {diaFrame.dispose();close();}});
		diaFrame.add(b);
		diaFrame.pack();
		diaFrame.setVisible(true);
	}
	void noteMsg(String s)
	{
		if(diaFrame!=null)if(diaFrame.isValid())diaFrame.dispose();
		diaFrame=new Dialog(new Frame(),"jICQ信息:",true);
		diaFrame.setResizable(false);
		
		diaFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){diaFrame.dispose();}});
		diaFrame.setLayout(new FlowLayout(FlowLayout.CENTER));
		diaFrame.setBounds(200,150,200,150);
		TextArea ta=new TextArea(s,6,30,TextArea.SCROLLBARS_VERTICAL_ONLY);
		ta.setEditable(false);
		diaFrame.add(ta);
		diaFrame.setBackground(new Color(13947080)) ;
		Button b=new Button("确定");
		b.addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {diaFrame.dispose();}});
		diaFrame.add(b);
		diaFrame.pack();
		diaFrame.setVisible(true);
	}
	void joinedFrame(String s)
	{
		if(diaFrame!=null)if(diaFrame.isValid())diaFrame.dispose();
		joinedIcqNo=s.substring(s.indexOf("icqNo:")+6);
		joinedIcqNo=joinedIcqNo.substring(0,joinedIcqNo.indexOf(' '));
		diaFrame=new Dialog(new Frame(),"jICQ消息",true);
		diaFrame.setResizable(false);
		
		diaFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){diaFrame.dispose();}});
		diaFrame.setLayout(new FlowLayout(FlowLayout.CENTER));
		diaFrame.setBounds(200,150,200,150);
		TextArea ta=new TextArea(s,6,30,TextArea.SCROLLBARS_VERTICAL_ONLY);
		ta.setEditable(false);
		diaFrame.add(ta);
		diaFrame.setBackground(new Color(13947080)) ;
		String bADDs="同意",bDISs="拒绝";
		Button bADD=new Button(bADDs);
		bADD.addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {diaFrame.dispose();joined();}});
		Button bDIS=new Button(bDISs);
		bDIS.addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {diaFrame.dispose();}});
		diaFrame.add(bADD);
		diaFrame.add(bDIS);
		diaFrame.pack();
		diaFrame.setVisible(true);
	}
	void joined()
	{
		Sender s=new Sender("JOINED icqNo:"+myIcqID.icqNo+" join:"+joinedIcqNo);
		s.start();
		Result r=s.getReturn();
		if(r.getCode()!=200)noteMsg(r.getMsg());
		else{IcqID icqid=new IcqID();icqid.icqNo=joinedIcqNo;setFriend(icqid.icqNo,icqid);repaintEvt=true;}
	}
	public static void setFriend(String key,Object value){
		friend.put(key,value);repaintEvt=true;
	}
	public static IcqID getFriend(String key){
		return (IcqID)friend.get(key);
	}

	public static void setMessage(String obj)	//add system message
	{
		if(obj.indexOf(' ')==-1)obj+=" ";
		if(obj.substring(0,obj.indexOf(' ')).equals("DUPLOGON"))duplogon=true;
		else message.insertElementAt(obj,0);
		repaintEvt=true;
		jICQ.audioPlay(2);
	}

	void reSort()
	{
		Enumeration e=friend.keys();
		IcqID icqid;
		int startIndex=0;
		for(;e.hasMoreElements();)
		{
			String icqNo=(String)e.nextElement();
			icqid=(IcqID)friend.get(icqNo);
			if(icqid.isOnline){icqid.index=startIndex++;friend.put(icqNo,icqid);}
		}
		e=friend.keys();
		for(;e.hasMoreElements();)
		{
			String icqNo=(String)e.nextElement();
			icqid=(IcqID)friend.get(icqNo);
			if(!icqid.isOnline){icqid.index=startIndex++;friend.put(icqNo,icqid);}
			//System.out.println("  icqNo="+icqid.icqNo+" ,index"+icqid.index);
		}
	}

	void toHash(String s)
	{
		String no;
		System.out.println("  toHash() Received:"+s);
		if (s.equals(""))return;
		try{
			s=s.trim();
			if(s.equals(","))return;
			s=s.substring(1,s.length());
			while(s.indexOf(',')!=-1){
				IcqID icqid=new IcqID();
				no=s.substring(0,s.indexOf(','));
				s=s.substring(s.indexOf(',')+1);
				icqid.icqNo=no;
				setFriend(no,icqid);
				//System.out.println("  No="+no);
			}
		}catch(Exception e){System.out.println("  error in toHash():"+e);}
	}

	static IcqID getID(IcqID in)
	{
		in.checked=true;
		//System.out.println("  getID() ");
		IcqID icqid=null;
		if(in==null)return null;
		else icqid=in;
		if(in.icqNo==null)return null;

		Sender sender=new Sender("GETID icqNo:"+icqid.icqNo);
		sender.start();
		Result r=sender.getReturn(5);
		if (r.getCode()!=200){return null;}
		String icqids=r.getMsg();
		String inline=null;
		String nick=null,sex=null,picNo="1",info=null,tel=null,addr=null,age="20",check="否";
		String http=null,mobile=null,email=null,pass=null,ip=null,statu=null,integral=null;
		try{
			do{
				inline=icqids.substring(0,icqids.indexOf("\n"));
				icqids=icqids.substring(icqids.indexOf("\n")+1);
				//System.out.println("  getID() received="+inline);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("nick"))nick=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("sex"))sex=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("picNo"))picNo=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("info"))info=inline.substring(inline.indexOf(' ')+1);
				info=replace(info,"\r","\n");
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("tel"))tel=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("addr"))addr=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("http"))http=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("mobile"))mobile=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("email"))email=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("pass"))pass=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("check"))check=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("age"))age=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("ip"))ip=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("statu"))statu=inline.substring(inline.indexOf(' ')+1);
				if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("integral"))integral=inline.substring(inline.indexOf(' ')+1);
			}while(!inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("end"));
		}catch(Exception e){System.out.println("  MainFrame getID() string error:"+e);}
		icqid.nick=nick;
		//icqid.pass=pass;
		icqid.info=info;
		icqid.sex=sex;
		icqid.tel=tel;
		icqid.mobile=mobile;
		icqid.http=http;
		icqid.email=email;
		icqid.addr=addr;
		icqid.age=age;
		icqid.picNo=picNo;
		icqid.check=check;
		icqid.integral=integral;
		if(statu.equals("1")){
			icqid.isOnline=true;
			try{
				String rport;
				rport=ip.substring(ip.lastIndexOf(":")+1);
				ip=ip.substring(0,ip.indexOf(":"));
				icqid.ip=ip;icqid.rport=rport;
			}catch(Exception e){}
		}
		return icqid;
	}
	static String replace(String s1,String s2,String s3)
	{
		if(s1==null||s2==null||s3==null)return s1;
		try{while(-1!=s1.indexOf(s2)){s1=s1.substring(0,s1.indexOf(s2))+s3+s1.substring(s1.indexOf(s2)+s2.length());}}catch(Exception e){System.out.println("  replace() error:"+s1);}
		return s1;
	}
	void toID(String s)
	{
		//System.out.println("  toID() Received:\n"+s+"**");
		if(s.equals(""))return;
		s+=" ";
		IcqID icqid;

		String no,ip;
		try{
			while(s.indexOf("\n")!=-1){
				no=s.substring(0,s.indexOf(' '));
				s=s.substring(s.indexOf(' ')+1);
				ip=s.substring(0,s.indexOf("\n"));
				s=s.substring(s.indexOf("\n")+1);
				icqid=(IcqID)friend.get(no);
				if(icqid!=null){
					icqid.isOnline=true;
					icqid.ip=ip.substring(0,ip.indexOf(':'));
					icqid.rport=ip.substring(ip.lastIndexOf(':')+1);
					setFriend(no,icqid);
				}
			}
		}catch(Exception e){System.out.println("  error in getOnline():"+e);}
	}

	void delFriend()
	{
		if(currenticqid==null)return;
		if(currenticqid.isStranger){friend.remove(currenticqid.icqNo);repaintEvt=true;return;}
		Sender s=new Sender("DELFRIEND icqNo:"+myIcqID.icqNo+" del:"+currenticqid.icqNo);
		s.start();
		Result r=s.getReturn();
		if(r.getCode()==200){
			currenticqid.stopRun=true;
			friend.remove(currenticqid.icqNo);
			repaintEvt=true;
			noteMsg("删除"+currenticqid.getNick()+"成功。");
		}
		else noteMsg("删除"+currenticqid.getNick()+"失败:"+r.getMsg());
	}
	void sendTo()
	{
		if(currenticqid!=null){
			if(currenticqid.smsg==null||!currenticqid.smsg.isValid()){
				currenticqid.smsg=new SMsg(currenticqid,myIcqID);
				currenticqid.clearNew();
				//repaint();
			}else{
				currenticqid.smsg.toFront();
			}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -