I am trying to make an action listener for a button to send a message from a server to client and vice versa, but I can't access the bufferedwriter variable from the thread, so I can't send a message. How can I access the variables from the thread? I am quite new to java, so I don't know a lot about it. Sorry if it was an obvious question.
Code(only the client):
package com.mpemessenger;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.Socket;
import java.util.concurrent.TimeUnit;
public class GUIClient extends JFrame {
    private JTextField messageField;
    private JButton sendButton;
    private JTextArea messageArea;
    private JScrollPane scroll;
    private JPanel All;
    public GUIClient() {
        add(All);
        setTitle("MPE Messenger");
        setSize(400, 500);
        scroll.setAutoscrolls(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        messageArea.setEditable(false);
        All.getRootPane().setDefaultButton(sendButton);
        Thread thread = new Thread() {
            public void run() {
                int loop = 1;
                Socket socket = null;
                InputStreamReader inputStreamReader = null;
                OutputStreamWriter outputStreamWriter = null;
                BufferedReader bufferedReader = null;
                BufferedWriter bufferedWriter = null;
                try {
                    socket = new Socket("localhost", 6969);
                    inputStreamReader = new InputStreamReader(socket.getInputStream());
                    outputStreamWriter = new OutputStreamWriter(socket.getOutputStream());
                    bufferedReader = new BufferedReader(inputStreamReader);
                    bufferedWriter = new BufferedWriter(outputStreamWriter);
                    bufferedWriter.write("Connected!!!");
                    while (loop == 1) {
                        messageArea.append("Server:" + bufferedReader.readLine() + "\n");
                        String messageFromClient = bufferedReader.readLine();
                        messageArea.append("Server:" + messageFromClient + "\n");
                        loop = 2;
                    }
                    while(loop == 2) {
                        TimeUnit.SECONDS.sleep(1);
                        loop = 1;
                    }
                } catch (IOException | InterruptedException ioException) {
                    ioException.printStackTrace();
                }
                
                
            }
        };
        thread.start();
        BufferedWriter finalBufferedWriter = bufferedWriter;
        finalBufferedWriter = new BufferedWriter(outputStreamWriter);
        BufferedWriter finalBufferedWriter1 = finalBufferedWriter;
        sendButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                finalBufferedWriter1.write(messageField.getText());
                finalBufferedWriter1.newLine();
                finalBufferedWriter1.flush();
                messageField.setText("");
            }
        });
    }
        }