Java 如何从其他客户端或服务器向列表中添加文本?

Java 如何从其他客户端或服务器向列表中添加文本?,java,list,chat,Java,List,Chat,我正在尝试编写自己的聊天程序,但无法从一个客户机到下一个客户机获取文本。我将聊天记录作为列表,但无法添加。如果你知道如何解决这个问题,或者有一个可行的想法,我很乐意听到 public class SendAction implements ActionListener { private JButton sendButton; private JButton sendButtonServer; private JTextField text; private J

我正在尝试编写自己的聊天程序,但无法从一个客户机到下一个客户机获取文本。我将聊天记录作为列表,但无法添加。如果你知道如何解决这个问题,或者有一个可行的想法,我很乐意听到

public class SendAction implements ActionListener {

    private JButton sendButton;
    private JButton sendButtonServer;
    private JTextField text;
    private JLabel label;
    static ArrayList<String> textList = new ArrayList<String>();
    static ArrayList<String> textListServer = new ArrayList<String>();
    private String chatText;

    public SendAction(JButton sendButton) {
        this.sendButton = sendButton;
        this.sendButtonServer = sendButtonServer;
    }

    public SendAction(JTextField text) {
        this.text = text;
    }

    public SendAction(JLabel label) {
        this.label = label;
    }

    public void actionPerformed(ActionEvent e) {
        String action = e.getActionCommand();

        if (e.getSource() == P2PChatClient.sendButton) {
            if (P2PChatClient.text.getText().equals("")) {
            } else {
                textList.add("Client: " + P2PChatClient.text.getText());
                System.out.println("Eingegebene ArrayList Elements: "
                        + textList);
                chatText = String.join("  |  ", textList);
                P2PChatClient.label.setText(chatText);

                P2PChatClient.text.setText(null);
            }
        }

        if (e.getSource() == P2PChatServer.sendButtonServer) {
            if (P2PChatServer.textServer.getText().equals("")) {
            } else {
                textListServer.add("Server: "
                        + P2PChatServer.textServer.getText());
                System.out.println("Eingegebene ArrayList Elements: "
                        + textListServer);
                chatText = String.join("  |  ", textListServer);
                P2PChatServer.labelServer.setText(chatText);

                P2PChatServer.textServer.setText(null);
            }
        }
    }
}
还有一个:

public class ChatClientSocket extends Thread {
    private String ip;
    private int port;
    private P2PChatClient client;
    private DataInputStream inStream;
    private DataOutputStream outStream;

    public ChatClientSocket(String ip, int port, P2PChatClient client) {
        this.port = port;
        this.ip = ip;
        this.client = client;
    }

    public void run() {
        try {
            Socket clientSocket = new Socket(ip, port);

            InputStream in = clientSocket.getInputStream();
            OutputStream out = clientSocket.getOutputStream();

            inStream = new DataInputStream(in);
            outStream = new DataOutputStream(out);

            while (true) {
                String utf = inStream.readUTF();

                SendAction.textList.add(utf);

                // client.setMessage(utf);
            }
        } catch (UnknownHostException uhe) {
            System.out.println("Client Fehler: " + uhe.toString());
        } catch (IOException ioe) {
            System.out.println("Client Fehler: " + ioe.toString());
        }
    }

    public void sendText(String message) {
        try {
            if (message != null) {
                outStream.writeUTF(message);
            }
        } catch (IOException ioe) {
            System.out.println("Fehler beim senden im Client: "
                    + ioe.toString());
        } catch (NullPointerException npe) {
            System.out.println("Fehler beim senden im Client: "
                    + npe.toString());
        }
    }
}
我用了一个文本区。 使用setEditable,您无法对其进行编辑,而scrollArea会使其可滚动

textArea.setEditable(false);
        scrollArea = new JScrollPane(textArea);
textArea.setEditable(false);
        scrollArea = new JScrollPane(textArea);