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

📄 jmessenger.java

📁 an instant messenger written in java (client)
💻 JAVA
字号:
import javax.swing.*;import java.util.*;public class JMessenger implements LoginListener, ChatListener, PrivateMessageListener, TransportListener{    public String loginname;  // use to record the input name     private JTransport contact;    private JLogin login = null;    private JChat chat = null;        private LinkedList privateMessages = new LinkedList();     // use java.util.LinkedList        public JMessenger()    {    contact = new JTransport(this);    login = new JLogin(this);    chat = new JChat(this);        login.setVisible(true);    }        // TransportListener    public void onConnect()    {        contact.authenticateUser(loginname);    }        public void onUserValid()    {        login.setVisible(false);        chat.setTitle("Messenger -- Logged in --> " + loginname);        chat.showChat();    }            public void onUserJoin(String name)    {        chat.userJoin(name);    }        public void onUserLeave(String name)    {        chat.userLeft(name);        for (int i=0; i<privateMessages.size(); i++)        {            if (((JPrivateMessage)privateMessages.get(i)).remotename.equalsIgnoreCase(name))            {                ((JPrivateMessage)privateMessages.get(i)).userLeft();                break;            }        }    }        public void onMessageRev(String from, String message)    {        // if no private chat window open yet        JPrivateMessage first;        boolean available = false;                for (int i=0; i<privateMessages.size(); i++)        {            if (((JPrivateMessage)privateMessages.get(i)).remotename.equalsIgnoreCase(from))            {                available = true;                ((JPrivateMessage)privateMessages.get(i)).revMessage(message);            }        }        if (!available)    // then create a new private chat window        {            first = new JPrivateMessage(this, loginname, from);            first.revMessage(message);            privateMessages.add(first);        }    }        public void onMessageRevFromAll(String from, String message)    {        chat.revMessage(from, message);        }        public void onSendMessageError(int id, String description)    {        System.out.println("Error! Fail to send." + description);    }        public void onLostConnection()    {        System.out.println("Lost connection");                chat.setVisible(false);                for (int i=0; i<privateMessages.size(); i++)     // i=1??            ((JPrivateMessage)privateMessages.get(i)).dispose();                privateMessages.clear();        login.setVisible(true);    }        // PrivateMessageListener    public void onSendMessage(String to, String message)    {        contact.sendMessage(to, message);    }        public void onClosePrivateMessage(String remotename)    {        for(int i = 0; i < privateMessages.size(); i++)        {            if(((JPrivateMessage)privateMessages.get(i)).remotename.equalsIgnoreCase(remotename))            {                ((JPrivateMessage)privateMessages.get(i)).dispose();                privateMessages.remove(i);                break;            }        }    }        // ChatListener    public void onSendMessageToAll(String message)    {           contact.sendMessageToAll(message);    }        public void onInitiatePrivateMessage(String remoteUser)    {           if(remoteUser.equals(loginname))    // try to talk with oneself            JOptionPane.showMessageDialog(null, "You can't talk to yourself!", "Contact Error", JOptionPane.ERROR_MESSAGE);        else if (!remoteUser.equalsIgnoreCase(loginname))        {            JPrivateMessage initial;            boolean available = false;                        for (int i=0; i<privateMessages.size(); i++)            {                if (((JPrivateMessage)privateMessages.get(i)).remotename.equalsIgnoreCase(remoteUser))                {                    available = true;                    ((JPrivateMessage)privateMessages.get(i)).toFront();                }            }            if (!available)    // then create a new private chat window            {                initial = new JPrivateMessage(this, loginname, remoteUser);                privateMessages.add(initial);            }             }    }       // LoginListener    public void onConnectRequest(String host, int port, String username)    {        loginname = username;    // record the login name of the user        contact.connect(host, port);    }    public void onLoginCancel()    {        System.exit(0);    }        public static void main(String argv[])    {        JMessenger main = new JMessenger();    }} 

⌨️ 快捷键说明

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