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