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