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

📄 privatechat.java

📁 simple chat program for communication between machines source codes plus executables in java
💻 JAVA
字号:
package bng.chat;

import java.awt.Panel;
import java.awt.Label;
import java.awt.Window;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.TextArea;
import java.awt.Button;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Cursor;
import java.awt.Image;
import java.net.URL;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;

public class PrivateChat extends Frame implements KeyListener,ActionListener
{
	PrivateChat(Client Parent, String ToUserName)
	{
		client = Parent;
		UserName = ToUserName;
		setTitle("Private Chat With "+UserName); 
		setBackground(Color.red);
		//setFont(client.getFont());
		
		InitializeComponents();
		/****Window Closing Event *****/
		addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent evt) { ExitPrivateWindow(); }});	
	}	
	
	/******* Initialize All Components **********/
	private void InitializeComponents()
	{
		setLayout(null);
		Label LblConversation = new Label("Conversation With "+UserName);
		LblConversation.setForeground(client.Color.blue);
		LblConversation.setBounds(5, 30, 400, 20);
		add(LblConversation);
		
		Panel MessagePanel = new Panel(new BorderLayout());
		//messagecanvas = new CanvasLogin(client);						
		MessagePanel.setBounds(5, 50, 400, 200);
		add(MessagePanel);
		
		TxtMessage = new TextField();
		TxtMessage.addKeyListener(this);
		//TxtMessage.setFont(client.TextFont);
		TxtMessage.setBounds(5, 260, 320, 20);
		add(TxtMessage);
		
		CmdSend = new Button(client,"Send");
		CmdSend.addActionListener(this);
		CmdSend.setBounds(335, 260, 70, 20);
		add(CmdSend);
		
		CmdClear = new Button(client,"Clear");
		CmdClear.addActionListener(this);
		CmdClear.setBounds(5, 290, 80, 20);
		
		CmdIgnore = new Button(client,"Ignore User");
		CmdIgnore.addActionListener(this);
		CmdIgnore.setBounds(105, 290, 80, 20);
		
		CmdClose = new Button(client,"Close");
		CmdClose.addActionListener(this);
		CmdClose.setBounds(205, 290, 80, 20);
		
		add(CmdClear);
		add(CmdIgnore);
		add(CmdClose);
				
		setSize(415,350);
		setResizable(false);
		show();
		this.requestFocus();
	}
	
	/***********Action Listener coding **********/
	public void actionPerformed(ActionEvent evt)
	{
		if(evt.getSource().equals(CmdSend))
		{
			/******** Send Message *********/
			if (!(TxtMessage.getText().trim().equals("")))
				SendMessage();
		}
		
		/*****Close Button Event ********/
		if(evt.getSource().equals(CmdClose))
		{
			ExitPrivateWindow();	
		}
		
		/*********Clear Button Event ********/
		if(evt.getSource().equals(CmdClear))
		{
			ClearAll();
		}
		
		protected void ClearAll()
	    {
		    MessageArray.clear();
		    TotalWidth = 0;
		    TotalHeight = 0;
			MessageCount = 0;
			scrollview.setValues(TotalWidth,TotalHeight);	
		}
	
		
		/***** Ignore Action Event ********/
			}
	
	/********* Key Listener Event *************/
	public void keyPressed(KeyEvent evt)
	{
		if((evt.getKeyCode() == 10) && (!(TxtMessage.getText().trim().equals(""))))		
		{
			SendMessage();
		}
	}
		
	public void keyTyped(KeyEvent e){}
	public void keyReleased(KeyEvent e){}
		/***** Enable the Private Chat when the End User logged in****/
	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!",3);	
				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!",3);	
				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--;		
	}	
	private void SendMessage()
	{
		server.sendToAll(client.UserName+": "+TxtMessage.getText());
		client.sendMessage();			
		TxtMessage.setText("");
		TxtMessage.requestFocus();
	}
	
	/******** Function to Set the Image Name into Text Field ************/

	/*********Function to Add a Message To Messagecanvas *********/
	//protected void Add(String Message)
	//{		
	//	client.sendMessage();			
	//}
	
	protected void DisableAll()
	{
		TxtMessage.setEnabled(false);
		CmdSend.setEnabled(false);	
	}
	
	protected void EnableAll()
	{
		TxtMessage.setEnabled(true);
		CmdSend.setEnabled(true);	
	}
	
	/****** Exit from Private Chat */
    private void ExitPrivateWindow() {
    	client.RemovePrivateWindow(UserName);        
        setVisible(false);        
    }
    
	/*************** Global Variable Declarations ****************/
	Client client;
	Server server;
	protected String UserName;
	protected int PrivateWindowCount;
	CanvasLogin messagecanvas;
	TextField TxtMessage;
	Button CmdSend,CmdClose,CmdIgnore,CmdClear;
	boolean EmotionFlag;
	Panel EmotionPanel;
}

⌨️ 快捷键说明

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