📄 privatechat.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 + -