请做一个功能俱全的使用Java的swing的聊天室
以下是一个使用Java的Swing库实现的功能完整的聊天室示例代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.Socket;
public class ChatClient extends JFrame {
private JTextArea chatArea;
private JTextField messageField;
private JButton sendButton;
private Socket socket;
private BufferedReader reader;
private BufferedWriter writer;
public ChatClient(String serverAddress, int serverPort) {
setTitle("Chat Room");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
chatArea = new JTextArea();
chatArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(chatArea);
messageField = new JTextField();
sendButton = new JButton("Send");
sendButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String message = messageField.getText();
if (!message.isEmpty()) {
sendMessage(message);
messageField.setText("");
}
}
});
setLayout(new BorderLayout());
add(scrollPane, BorderLayout.CENTER);
add(messageField, BorderLayout.SOUTH);
add(sendButton, BorderLayout.EAST);
try {
socket = new Socket(serverAddress, serverPort);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
} catch (IOException e) {
e.printStackTrace();
}
new Thread(new ReceiveMessageTask()).start();
setVisible(true);
}
private void sendMessage(String message) {
try {
writer.write(message);
writer.newLine();
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
private void receiveMessage(String message) {
chatArea.append(message + "\n");
}
private class ReceiveMessageTask implements Runnable {
@Override
public void run() {
try {
String message;
while ((message = reader.readLine()) != null) {
receiveMessage(message);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
writer.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new ChatClient("localhost", 8888);
}
}
此示例实现了一个简单的聊天室客户端,使用Swing库构建了用户界面。用户可以在消息输入框中输入消息并点击发送按钮发送给服务器,服务器将收到的消息广播给所有客户端。客户端接收到消息后将其显示在聊天区域中。
要运行此示例,您需要先启动一个聊天服务器,并将服务器地址和端口传递给ChatClient构造函数中的参数
原文地址: https://www.cveoy.top/t/topic/iyE4 著作权归作者所有。请勿转载和采集!