Files
ClassroomInteraction/Student/src/main/java/com/cfive/classroom/student/Chat.java

61 lines
2.5 KiB
Java

package com.cfive.classroom.student;
import com.cfive.classroom.library.net.StudentNet;
import com.cfive.classroom.library.net.util.MessageObject;
import com.cfive.classroom.library.net.util.MessageType;
import com.cfive.classroom.library.net.util.ReceiveListener;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Properties;
public class Chat {
private JPanel panel1;
private JButton sendButton;
private JTextArea receiveText;
private JTextArea sendText;
private static JFrame frame = new JFrame("留言");
private static final Logger LOGGER = LogManager.getLogger();
public Chat(StudentNet studentNet,String stuNo,String stuName,ChatReceiveListener chatReceiveListener) {
//发送消息
sendButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String sendMessage = sendText.getText();
if(sendMessage.length()!=0) {
LOGGER.info(stuNo+stuName);
receiveText.append("我:"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒"))+"\n"+sendMessage+"\n");
studentNet.sendMessage(new MessageObject(stuNo, stuName, null,sendText.getText() ,null,null,LocalDateTime.now(),MessageType.Chat));
sendText.setText("");
}
else{
JOptionPane.showMessageDialog(null,"无发送内容","错误!",JOptionPane.ERROR_MESSAGE);
}
}
});
//接收消息
studentNet.setOnReceiveListener(new ReceiveListener() {
@Override
public void onReceive(MessageObject messageObject) {
if(messageObject.getMessageType()==MessageType.ChatToAll){
receiveText.append("教师:"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒"))+'\n'+messageObject.getMessage()+"\n");
}
chatReceiveListener.onReceive(messageObject);
}
});
}
public void start() {
frame.setContentPane(this.panel1);
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}