以下是一个使用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构造函数中的参数

请做一个功能俱全的使用Java的swing的聊天室

原文地址: https://www.cveoy.top/t/topic/iyE4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录