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

📄 chatclient.java

📁 Java编写的GUI聊天工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					/********* LIST UserName;UserName; RFC Coding***********/
					if(ServerData.startsWith("LIST"))
					{
						Tokenizer = new StringTokenizer(ServerData.substring(5),";");						
						/********Update the Information Label *********/
						TotalUserCount = Tokenizer.countTokens();						
						UpdateInformationLabel();
						/**********Add User Item into User Canvas *********/						
						tappanel.UserCanvas.ClearAll();
						while(Tokenizer.hasMoreTokens())
						{							
							tappanel.UserCanvas.AddListItemToMessageObject(Tokenizer.nextToken());							
						}	
						
						messagecanvas.ClearAll();										
						messagecanvas.AddMessageToMessageObject("Welcome To The "+UserRoom+" Room!",MESSAGE_TYPE_JOIN);		
					}
					
					/*********Room Rfc ********/
					if( ServerData.startsWith("ROOM"))
					{
						/********** Loading Room List in to Room Canvas **************/
						Tokenizer = new StringTokenizer(ServerData.substring(5),";");
						UserRoom = Tokenizer.nextToken();
						UpdateInformationLabel();
						/**********Add User Item into User Canvas *********/						
						tappanel.RoomCanvas.ClearAll();
						tappanel.RoomCanvas.AddListItemToMessageObject(UserRoom);
						while(Tokenizer.hasMoreTokens())
						{							
							tappanel.RoomCanvas.AddListItemToMessageObject(Tokenizer.nextToken());							
						}
					}
					
					/********** ADD RFC *********/
					if(ServerData.startsWith("ADD"))
					{
						/********Update the Information Label *********/
						TotalUserCount++;
						UpdateInformationLabel();
						
						/**********Add User Item into User Canvas *********/
						SplitString = ServerData.substring(5);
						EnablePrivateWindow(SplitString);
						tappanel.UserCanvas.AddListItemToMessageObject(SplitString);							
						messagecanvas.AddMessageToMessageObject(SplitString + " joins chat...",MESSAGE_TYPE_JOIN);						
					}
					
					/*********If User Name Alread Exists **********/
					if (ServerData.startsWith("EXIS"))
					{						
						messagecanvas.AddMessageToMessageObject(" User Name Already Exists... Try Again With Some Other Name!",MESSAGE_TYPE_ADMIN);								
						thread = null;
						QuitConnection(QUIT_TYPE_NULL);
					}					 
					
					/******** REMOVE User RFC Coding **********/
					if (ServerData.startsWith("REMO"))
					{						
						SplitString = ServerData.substring(5);	
						
						tappanel.UserCanvas.RemoveListItem(SplitString);
						RemoveUserFromPrivateChat(SplitString);
						messagecanvas.AddMessageToMessageObject(SplitString+" has been logged Out from Chat!",MESSAGE_TYPE_LEAVE );
						
						/*****Update the Information Label ********/
						TotalUserCount--;
						UpdateInformationLabel();
						
					}
					
					/******** MESS RFC Coding Starts **********/
					if( ServerData.startsWith("MESS"))
					{
						/**** Chk whether ignored user *********/
						if(!(tappanel.UserCanvas.IsIgnoredUser(ServerData.substring(5,ServerData.indexOf(":")))))						
							messagecanvas.AddMessageToMessageObject(ServerData.substring(5),MESSAGE_TYPE_DEFAULT);							
					}
					
					/***** KICK RFC Starts ***********/
					if (ServerData.startsWith("KICK"))
					{
						messagecanvas.AddMessageToMessageObject("You are Kicked Out From Chat for flooding the message!",MESSAGE_TYPE_ADMIN);
						thread = null;
						QuitConnection(QUIT_TYPE_KICK);	
					}
					
					/***** INKI RFC (Information about kicked off User *********/
					if( ServerData.startsWith("INKI"))
					{
						SplitString = ServerData.substring(5);							
						tappanel.UserCanvas.RemoveListItem(SplitString);
						RemoveUserFromPrivateChat(SplitString);
						messagecanvas.AddMessageToMessageObject(SplitString+" has been kicked Out from Chat by the Administrator!",MESSAGE_TYPE_ADMIN );
						
						/*****Update the Information Label ********/
						TotalUserCount--;
						UpdateInformationLabel();	
					}
					
					/***** Change Room RFC **********/
					if( ServerData.startsWith("CHRO"))
					{
						UserRoom = ServerData.substring(5);	
					}
					
					/********** Join Room RFC *************/
					if( ServerData.startsWith("JORO"))
					{
						SplitString = ServerData.substring(5);
						tappanel.UserCanvas.AddListItemToMessageObject(SplitString);
						/*****Update the Information Label ********/
						TotalUserCount++;
						UpdateInformationLabel();	
						
						messagecanvas.AddMessageToMessageObject(SplitString + " joins chat...",MESSAGE_TYPE_JOIN);
					}
					
					/***********Leave Room RFC **********/
					if( ServerData.startsWith("LERO"))
					{
						SplitString = ServerData.substring(5,ServerData.indexOf("~"));
						tappanel.UserCanvas.RemoveListItem(SplitString);
						messagecanvas.AddMessageToMessageObject(SplitString+" has leaves "+UserRoom+" Room and join into "+ServerData.substring(ServerData.indexOf("~")+1)+" Room",MESSAGE_TYPE_ADMIN);													
						
						/*****Update the Information Label ********/
						TotalUserCount--;
						UpdateInformationLabel();	
					}
					
					/********** Room Count RFC ********/					
					if( ServerData.startsWith("ROCO"))
					{
						SplitString = ServerData.substring(5,ServerData.indexOf("~"));
						tappanel.TxtUserCount.setText("Total Users in "+SplitString+" : "+ServerData.substring(ServerData.indexOf("~")+1));
					}
					
					
					/******* Private Message RFC **********/
					if( ServerData.startsWith("PRIV"))
					{												
						SplitString = ServerData.substring(5,ServerData.indexOf(":"));
						/**** Chk whether ignored user *********/
						if(!(tappanel.UserCanvas.IsIgnoredUser(SplitString)))	
						{
							boolean PrivateFlag = false;
							for(G_ILoop = 0; G_ILoop < PrivateWindowCount;G_ILoop++)
							{								
								if(privatewindow[G_ILoop].UserName.equals(SplitString))
								{
									privatewindow[G_ILoop].AddMessageToMessageCanvas(ServerData.substring(5));
									privatewindow[G_ILoop].show();
									privatewindow[G_ILoop].requestFocus();
									PrivateFlag = true;
									break;										
								}
							}	
							
							if(!(PrivateFlag))
							{	
								if(PrivateWindowCount >= MAX_PRIVATE_WINDOW)
								{
									messagecanvas.AddMessageToMessageObject("You are Exceeding private window limit! So you may lose some message from your friends!",MESSAGE_TYPE_ADMIN);	
								}
								else
								{														
									privatewindow[PrivateWindowCount++] = new PrivateChat(this,SplitString);
									privatewindow[PrivateWindowCount-1].AddMessageToMessageCanvas(ServerData.substring(5));
									privatewindow[PrivateWindowCount-1].show();
									privatewindow[PrivateWindowCount-1].requestFocus();																
								}
							}
							
						}						
					}
				}catch(Exception _Exc) { messagecanvas.AddMessageToMessageObject(_Exc.getMessage(),MESSAGE_TYPE_ADMIN);QuitConnection(QUIT_TYPE_DEFAULT); }	
		}	
	}
	
	/***** Enable the Private Chat when the End User logged out****/
	private void EnablePrivateWindow(String ToUserName)
	{
		for(G_ILoop = 0; G_ILoop < PrivateWindowCount; G_ILoop++)
		{
			if(privatewindow[G_ILoop].UserName.equals(ToUserName))
			{
				privatewindow[G_ILoop].messagecanvas.AddMessageToMessageObject(ToUserName + " is Currently Online!",MESSAGE_TYPE_ADMIN);	
				privatewindow[G_ILoop].EnableAll();			
				return;	
			}
		}	
	}
	
	/***** Disable the Private Chat when the End User logged out****/
	private void RemoveUserFromPrivateChat(String ToUserName)
	{
		for(G_ILoop = 0; G_ILoop < PrivateWindowCount; G_ILoop++)
		{
			if(privatewindow[G_ILoop].UserName.equals(ToUserName))
			{
				privatewindow[G_ILoop].messagecanvas.AddMessageToMessageObject(ToUserName + " is Currently Offline!",MESSAGE_TYPE_ADMIN);	
				privatewindow[G_ILoop].DisableAll();			
				return;	
			}
		}	
	}
	
	/*******Function To Send Private Message To Server ***********/
	protected void SentPrivateMessageToServer(String Message, String ToUserName)
	{
		SendMessageToServer("PRIV "+ToUserName+"~"+UserName+": "+Message);	
	}
	
	/******* Function To Remove Private Window ***************/
	protected void RemovePrivateWindow(String ToUserName)
	{		
		int m_UserIndex = 0;
		for(G_ILoop = 0; G_ILoop < PrivateWindowCount; G_ILoop++)
		{
			m_UserIndex++;
			if(privatewindow[G_ILoop].UserName.equals(ToUserName)) break;
		}						
		for(int m_iLoop = m_UserIndex;m_iLoop < PrivateWindowCount; m_iLoop++)
		{
			privatewindow[m_iLoop] = privatewindow[m_iLoop+1];	
		}
		
		PrivateWindowCount--;		
	}	
	
	/********* Function to Change Room *******/
	protected void ChangeRoom()
	{
		if(tappanel.RoomCanvas.SelectedUser.equals(""))
		{
			messagecanvas.AddMessageToMessageObject("Invalid Room Selection!",MESSAGE_TYPE_ADMIN);
			return;	
		}
		
		if(tappanel.RoomCanvas.SelectedUser.equals(UserRoom))
		{
			messagecanvas.AddMessageToMessageObject("You are already in that ROOM!",MESSAGE_TYPE_ADMIN);
			return;	
		}
		
		SendMessageToServer("CHRO "+UserName+"~"+tappanel.RoomCanvas.SelectedUser);
	}
	
	/******* Function to Send a RFC for Get a Room User Count ********/
	protected void GetRoomUserCount(String RoomName)
	{
		SendMessageToServer("ROCO "+RoomName);	
	}
	
	/******** Function to Set the Image Name into Text Field ************/
	protected void AddImageToTextField(String ImageName)
   	{
   		if(TxtMessage.getText()==null || TxtMessage.getText().equals(""))
			TxtMessage.setText("~~"+ImageName+" ");
		else
			TxtMessage.setText(TxtMessage.getText()+" "+"~~"+ImageName+" ");
   	}
	
	
	/*********Function to Destroy all the Objects********/
	private void QuitConnection(int QuitType)
	{		
		if(socket != null)
		{
			try {
				if (QuitType == QUIT_TYPE_DEFAULT)
					SendMessageToServer("QUIT "+UserName+"~"+UserRoom);
				if (QuitType == QUIT_TYPE_KICK)
					SendMessageToServer("KICK "+UserName+"~"+UserRoom);
				socket.close();	
				socket = null;
				tappanel.UserCanvas.ClearAll();					
			}catch(IOException _IoExc) { }			
		}
		if(thread != null)
		{
			thread.stop();
			thread = null;
		}		
		DisableAll();
		StartFlag = false;
		SetAppletStatus("ADMIN: CONNECTION TO THE SERVER CLOSED.");					
	}
	
	/***** Function To Disable All Components ********/
	private void DisableAll()
	{		
		TxtMessage.setEnabled(false);
		CmdSend.setEnabled(false);
		tappanel.enable(false);			
		disconnectitem.setEnabled(false);
		loginitem.setEnabled(true);
		
		UserName = "";
		UserRoom = "";
		TotalUserCount = 0;
	}
	/***** Function To Enable All Components ********/
	private void EnableAll()
	{
		TxtMessage.setEnabled(true);
		CmdSend.setEnabled(true);
		tappanel.enable(true);	
		disconnectitem.setEnabled(true);
		loginitem.setEnabled(false);
	}
	
	/*******Diconnect Chat ********/
	private void DisconnectChat()
	{
		if(socket != null)
			{
				messagecanvas.AddMessageToMessageObject("CONNECTION TO THE SERVER CLOSED",MESSAGE_TYPE_ADMIN);				
				QuitConnection(QUIT_TYPE_DEFAULT);			
			}	
	}
	
	/*********Setting the AppletStatus********/
	private void SetAppletStatus(String Message)
	{
		if (messagecanvas != null)
			messagecanvas.AddMessageToMessageObject(Message,MESSAGE_TYPE_ADMIN);		
	}
	
	public static void main(String args[]) {		
		ChatClient mainFrame = new ChatClient();				
	}
	
	/**************Global Variable Declarations*****************/
	String UserName,UserRoom,ServerName,AppletStatus,ChatLogo,BannerName,ProxyHost,ServerData,RoomList,SplitString;
	Image ImgLogo,ImgBanner;
	int ServerPort,ProxyPort,IconCount,TotalUserCount,G_ILoop;
	boolean StartFlag,IsProxy;	
	Socket socket;
	DataInputStream datainputstream;
	DataOutputStream dataoutputstream;
	Color[] ColorMap;
	Dimension dimension;
	MediaTracker tracker;
	Label InformationLabel;
	StringBuffer stringbuffer;
	Image[] IconArray;
	MessageCanvas messagecanvas;
	ScrollView MessageScrollView;
	Thread thread;
	StringTokenizer Tokenizer;
	TapPanel tappanel;
	TextField TxtMessage;
	Button CmdSend,CmdExit;
	Font TextFont;
	protected PrivateChat[] privatewindow;
	protected int PrivateWindowCount;
	InformationDialog dialog;
	Toolkit toolkit;
	MenuItem loginitem;
	MenuItem disconnectitem;
	MenuItem seperatoritem;
	MenuItem quititem,aboutitem;
}

⌨️ 快捷键说明

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