javaGUI实现多人聊天功能

下面是Java GUI实现多人聊天的完整攻略:

1. 确定实现方式

Java GUI实现多人聊天功能,可以采用Socket连接和Java Swing界面实现,也可以使用第三方库。这里我们介绍Socket连接和Java Swing界面实现的方式。

2. 创建Server端

首先,创建Server端代码,该部分主要用于监听客户端的连接请求,并进行相应的处理。其中,Server使用TCP协议连接,等待客户端连接。以下是Server端的示例代码:

import java.net.*;
import java.io.*;

public class Server {
    private Socket socket;
    private ServerSocket serverSocket;
    private DataInputStream in;
    private DataOutputStream out;

    public Server() {
        try {
            serverSocket = new ServerSocket(8000);
            socket = serverSocket.accept();
            System.out.println("客户端连接成功!");

            in = new DataInputStream(socket.getInputStream());
            out = new DataOutputStream(socket.getOutputStream());

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

            String message = "";
            String receiveMessage = "";

            //循环接收消息并回复客户端
            while(!message.equals("end")){
                receiveMessage = in.readUTF();
                System.out.println("客户端:" + receiveMessage);
                message = br.readLine();
                out.writeUTF(message);
                out.flush();
            }

            in.close();
            out.close();
            socket.close();
            serverSocket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new Server();
    }
}

3. 创建Client端

接下来,创建Client端代码,该部分主要用于连接到Server端并进行聊天操作。以下是Client端的示例代码:

import java.net.*;
import java.io.*;

public class Client {
    private Socket socket;
    private DataInputStream in;
    private DataOutputStream out;

    public Client() {
        try {
            socket = new Socket("localhost", 8000);
            System.out.println("连接服务器成功!");

            in = new DataInputStream(socket.getInputStream());
            out = new DataOutputStream(socket.getOutputStream());

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

            String message = "";
            String receiveMessage = "";

            //循环发送消息并接收服务器回复
            while(!message.equals("end")){
                message = br.readLine();
                out.writeUTF(message);
                out.flush();

                receiveMessage = in.readUTF();
                System.out.println("Server:" + receiveMessage);
            }

            in.close();
            out.close();
            socket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new Client();
    }
}

4. 创建GUI界面

最后,我们创建一个GUI界面,用于实现多人聊天的界面操作。以下是实现多人聊天的示例代码:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ChatClient {

    private JFrame frame;
    private JTextField textField;
    private JTextArea textArea;
    private Socket socket;
    private DataInputStream in;
    private DataOutputStream out;

    public ChatClient() {
        initialize();
        connect();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        frame.getContentPane().add(panel, BorderLayout.SOUTH);

        textField = new JTextField();
        panel.add(textField);
        textField.setColumns(30);

        JButton btnNewButton = new JButton("发送");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String message = textField.getText();
                try {
                    out.writeUTF(message);
                    out.flush();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }

                textField.setText("");
            }
        });
        panel.add(btnNewButton);

        JPanel panel_1 = new JPanel();
        frame.getContentPane().add(panel_1, BorderLayout.CENTER);
        panel_1.setLayout(new BorderLayout(0, 0));

        JScrollPane scrollPane = new JScrollPane();
        panel_1.add(scrollPane, BorderLayout.CENTER);

        textArea = new JTextArea();
        scrollPane.setViewportView(textArea);
    }

    /**
     * 连接服务器
     */
    private void connect() {
        try {
            socket = new Socket("localhost", 8000);
            System.out.println("连接服务器成功!");

            //初始化输入输出流
            in = new DataInputStream(socket.getInputStream());
            out = new DataOutputStream(socket.getOutputStream());

            //读取服务器信息
            new Thread(new Runnable() {

                @Override
                public void run() {
                    String message = "";
                    while (true) {
                        try {
                            message = in.readUTF();
                            textArea.append(message + "\n");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }).start();

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ChatClient window = new ChatClient();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

总结

以上就是实现Java GUI多人聊天的完整攻略。其中,我们首先确定了实现方式,并编写了Server和Client端的代码;接着,我们创建了一个简单的GUI界面,用于实现多人聊天功能。该程序可以扩展为多人聊天室、群聊等更为复杂的场景。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javaGUI实现多人聊天功能 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Springboot整合JwtHelper实现非对称加密

    下面是关于SpringBoot整合JwtHelper实现非对称加密的攻略: 一、背景知识 在了解攻略之前,需要先了解以下一些背景知识: JwtHelper:一个用于生成和验证JSON Web Tokens的Java库; 非对称加密算法:使用公钥和私钥加密、解密数据的算法,具有数据安全、数据完整性验证等优点。 本攻略将会使用JwtHelper库结合RSA非对称…

    Java 2023年5月20日
    00
  • java编程常用技术(推荐)

    Java编程常用技术(推荐) 在Java编程中,有一些常用的技术和工具,这些技术和工具可以帮助开发者提高编程效率、降低编程难度和优化程序性能。以下是本文推荐的Java编程常用技术: 1. 集合框架 Java集合框架提供了一系列的数据结构和算法,可以帮助开发者存储和操作不同类型的数据。集合框架分为三个层次:接口、实现和算法。接口层次定义了所有的集合类应该有的方…

    Java 2023年5月30日
    00
  • Spring Cache框架应用介绍

    针对Spring Cache框架应用介绍,我将分以下几个方面进行讲解,确保您能够全面了解并使用这一框架: Spring Cache框架介绍 Spring Cache框架是Spring官方提供的,用于缓存的框架。它可以将方法返回的结果缓存到内存、Redis、Ehcache等缓存服务器中,避免方法重复执行,保证系统性能和响应速度。同时,它还提供了对缓存的管理,如…

    Java 2023年5月19日
    00
  • Spring boot整合security详解

    针对题目“Spring boot整合security详解”的完整攻略,我这里给出如下内容: 1. 什么是Spring Security Spring Security是由Spring社区推出的一个安全框架,可以用于保护Web应用的安全,实现认证和授权等功能,广泛应用于现代Web应用。 2. Spring Boot整合Spring Security的步骤 2.…

    Java 2023年5月20日
    00
  • IntelliJ IDEA配置java环境及解决IDEA不能直接运行单个JAVA文件的问题

    下面我会详细讲解一下“IntelliJ IDEA配置java环境及解决IDEA不能直接运行单个JAVA文件的问题”的完整攻略,主要内容包括以下几个方面: 安装jdk 配置环境变量 配置IntelliJ IDEA的java环境 解决IDEA不能直接运行单个JAVA文件的问题 首先,我们需要先下载并安装jdk。以jdk1.8为例,下载后直接按照默认的安装路径进行…

    Java 2023年5月26日
    00
  • 创建Java线程安全类的七种方法

    让我详细讲解“创建Java线程安全类的七种方法”的完整攻略。Java线程安全类是多线程环境下安全并发的类,可以保证并发性的正确性。在Java中,可以使用以下7种方法来创建线程安全的类: 不可变性(Immutability):在Java中,不可变的对象是线程安全的,因为不可变对象的状态是不可更改的。你可以通过使用final修饰符来创建不可变的对象。例如: pu…

    Java 2023年5月19日
    00
  • Java Volatile关键字你真的了解吗

    Java Volatile关键字你真的了解吗 简介 Volatile是Java中的一种同步机制,用于确保正确的多线程并发。在使用Volatile变量时,所有线程都能够看到对此变量的最新修改值,这样可以避免由于线程间数据访问造成的脏读、数据竞争等常见问题。 使用Volatile变量时,线程可以读取和修改此变量,但是Volatile变量并不能保证线程安全,需要配…

    Java 2023年5月26日
    00
  • JSP实现简单人事管理系统

    JSP是一种基于Java的Web开发技术,它可以让我们在页面中嵌套Java代码,实现动态生成HTML页面,开发出更加灵活的Web应用程序。在这里,我将详细讲解使用JSP实现简单人事管理系统的完整攻略。下面分为以下步骤: 创建数据库表 创建JavaBean 创建JSP页面 配置Web应用程序 1. 创建数据库表 首先,我们需要创建一个数据库表,用于存储人事管理…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部