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

📄 chatgui.java

📁 老外写的chat
💻 JAVA
字号:
package Chat;

public class ChatGUI
    extends javax.swing.JFrame
    implements java.awt.event.ActionListener,
	       ChatMessageListener,
	       EventPrinter
{
    private class WindowListener extends java.awt.event.WindowAdapter
    {
	public void windowClosing(java.awt.event.WindowEvent event)
	{
	    System.out.println("Exiting ....");
	    System.exit(0);
	}	
    }

    ChatInterface chat;
    javax.swing.JTextArea  Messages      = new javax.swing.JTextArea(10,60);
    javax.swing.JTextArea  EventMessages = new javax.swing.JTextArea(10,60);
    javax.swing.JTextField Input         = new javax.swing.JTextField();
    java.awt.List          Users         = new java.awt.List();
    java.awt.Button        UserUpdate    = new java.awt.Button("Update User list");
    java.awt.Label         GroupLabel    = new java.awt.Label("Groups: ", java.awt.Label.CENTER);
    javax.swing.JTextField GroupInput    = new javax.swing.JTextField();
    int printposition = 0;
    
    public ChatGUI()
    {
	this.setSize(600, 400);
	this.setLocation(20, 40);

	chat = new Chat(this);

	Messages.setEditable(false);
	Messages.setLineWrap(true);
	EventMessages.setEditable(false);
	EventMessages.setLineWrap(true);
	Input.addActionListener(this);
	UserUpdate.addActionListener(this);
	GroupInput.addActionListener(this);

	javax.swing.JScrollPane messageScroll = new javax.swing.JScrollPane(Messages);
	javax.swing.JScrollPane eventMessageScroll = new javax.swing.JScrollPane(EventMessages);

	javax.swing.JPanel joinedAreas = new javax.swing.JPanel(new java.awt.BorderLayout());
	joinedAreas.add(messageScroll, java.awt.BorderLayout.CENTER);
	joinedAreas.add(eventMessageScroll, java.awt.BorderLayout.SOUTH);

	javax.swing.JPanel messageArea = new javax.swing.JPanel(new java.awt.BorderLayout());
	messageArea.add(joinedAreas, java.awt.BorderLayout.CENTER);
	messageArea.add(Input, java.awt.BorderLayout.SOUTH);

	javax.swing.JPanel userArea = new javax.swing.JPanel(new java.awt.BorderLayout());
	userArea.add(Users, java.awt.BorderLayout.CENTER);
	userArea.add(UserUpdate, java.awt.BorderLayout.SOUTH);

	javax.swing.JPanel lowerArea = new javax.swing.JPanel(new java.awt.BorderLayout());
	lowerArea.add(messageArea, java.awt.BorderLayout.CENTER);
	lowerArea.add(userArea, java.awt.BorderLayout.EAST);

	javax.swing.JPanel upperArea = new javax.swing.JPanel(new java.awt.BorderLayout());
	upperArea.add(GroupLabel, java.awt.BorderLayout.WEST);
	upperArea.add(GroupInput, java.awt.BorderLayout.CENTER);

	javax.swing.JPanel contentPane = new javax.swing.JPanel(new java.awt.BorderLayout());
	contentPane.add(lowerArea, java.awt.BorderLayout.CENTER);
	contentPane.add(upperArea, java.awt.BorderLayout.NORTH);

	contentPane.setOpaque(true);
	this.setContentPane(contentPane);

	setTitle("Chat");
	this.setVisible(true);
	WindowListener listen = new WindowListener();
	this.addWindowListener(listen);
	chat.JoinGroup(chatGroup, chatName, this);
    }

    private String chatName = "Andreas Carlsen";
    private String chatGroup = "MyChat";

    public static void main(String args[])
    {
	ChatGUI GUI = new ChatGUI();
    }

    public void actionPerformed(java.awt.event.ActionEvent event)
    {
	if(event.getSource() == Input) {
	    chat.SendMessage(Input.getText(), chatGroup);
	    Input.setText(null);
	}
	else if(event.getSource() == UserUpdate) {
	    String[] users = chat.ListMembers(chatGroup);
	    Users.removeAll();
	    for(int i = 0; i < users.length; ++i)
		Users.add(users[i]);
	    this.repaint();
	}
	else if(event.getSource() == GroupInput) {
	    chat.LeaveGroup(chatGroup);
	    chatGroup = GroupInput.getText();
	    chat.JoinGroup(chatGroup, chatName, this);
	}
    }

    public void print(String message)
    {
	if(message.endsWith("\n")) {
	    EventMessages.insert(message.substring(0,message.length() - 1),printposition);
	    EventMessages.insert("\n", 0);
	    printposition = 0;
	}
	else {
	    EventMessages.insert(message, printposition);
	    printposition += message.length();
	}
	this.repaint();
    }

    public void chatMessageEvent(ChatMessageEvent event)
    {
	Messages.insert(event.getMessage() + '\n', 0);
	this.repaint();
    }
}

⌨️ 快捷键说明

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