'When I use tcp server my program doesn't work correctly

When I start program without tcp server, my program work correctly but when tcp server gets involved my second gui screen is not working. I am asking why do I have such a problem.How to make server ready.
This my ServerClass;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    private ServerSocket serverSocket;

    public Server(ServerSocket serverSocket) {
        this.serverSocket = serverSocket;
    }

    public void startServer() {
        try {
            while (!serverSocket.isClosed()) {
                Socket socket = serverSocket.accept();
                System.out.println("Bağlandı");
                ClientHandler clientHandler = new ClientHandler(socket);

            }
        } catch (IOException e) {

        }
    }

    public static void main(String[] args) {
        
        Svg svg = new Svg();

        svg.getjBaslat().addActionListener(new ActionListener() {
            int rectNo;

            @Override
            public void actionPerformed(ActionEvent e) {
                
                    if (svg.getRectNo().getText().equals("")) {
                        rectNo = 0;
                    } else {
                        rectNo = Integer.parseInt(svg.getRectNo().getText());
                    }
                    svg.setVis();
                    
                    DrawShapes dShapes = new DrawShapes(rectNo);
                    
                    try {
                        ServerSocket serverSocket = new ServerSocket(9090);
                        Server server = new Server(serverSocket);
                        server.startServer();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }           
        });

    }
}

ClientHandler Class;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.ArrayList;

public class ClientHandler {

    public static ArrayList<ClientHandler> clientHandlers = new ArrayList<>();
    private Socket socket;
    private BufferedReader bufferedReader;
    private BufferedWriter bufferedWriter;
    
    public ClientHandler(Socket socket) {
        try {
            this.socket = socket;
            this.bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            this.bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            clientHandlers.add(this);
        }catch (IOException e) {
            closeEverything(socket, bufferedReader, bufferedWriter);
        }
    }
    
    
    
    public void removeClientHandler() {
        clientHandlers.remove(this);
    }
    
    public void closeEverything(Socket socket, BufferedReader bufferedReader, BufferedWriter bufferedWriter) {
        removeClientHandler();
        try {
            if(bufferedReader != null) {
                bufferedReader.close();
            }if (bufferedWriter != null) {
                bufferedWriter.close();
            }if(socket != null) {
                socket.close();
            }
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
    
}

Gui1 Class;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Gui1 {
    
    private JFrame jFrame;
    private JLabel jRect;
    private JButton jStart;
    private JTextField rectNo;
    
    public Gui1() {
        jFrame = new JFrame("Title");
        jRect = new JLabel("Rect Number:");
        jStart = new JButton("Start");
        rectNo = new JTextField();
        
        jRect.setBounds(10, 10, 120, 30);
        jStart.setBounds(150, 40, 80, 25);
        rectNo.setBounds(150, 10, 80, 30);
        
        
        rectNo.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                String value = rectNo.getText();
                int i = value.length();
                if (e.getKeyChar() >= '0' && e.getKeyChar() <= '9') {
                    rectNo.setEditable(true);
                }else {
                    rectNo.setEditable(false);
                    rectNo.setText("");             }
            }
        });
        
        
        jFrame.add(jRect);
        jFrame.add(jStart);
        jFrame.add(rectNo);
        jFrame.setSize(250,125);
        jFrame.setLayout(null);
        jFrame.setDefaultCloseOperation(3);
        jFrame.setResizable(false);
        jFrame.setVisible(true);
        
    }
    
    public JButton getjBaslat() {
        return jStart;
    }
    
    public JTextField getRectNo() {
        return rectNo;
    }
    
    public JFrame getjFrame() {
        return jFrame;
    }
    
    public void setVis() {
        if(jFrame.isVisible()) {
            jFrame.setVisible(false);
        }else {
            jFrame.setVisible(true);
        }
    }
}

DrawShapes Class;

import javax.swing.JFrame;

public class DrawShapes extends JFrame {
    private final static int GENISLIK = 800;
    private final static int YUKSEKLIK = 600;

    public DrawShapes(int x) {
        setSize(GENISLIK, YUKSEKLIK);
        setTitle("Sunucu");
        setResizable(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Panel panel = new Panel(x);
        add(panel);

        setVisible(true);
    }
}

Panel Class;

import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JPanel;
import javax.swing.Timer;

public class Panel extends JPanel implements ActionListener {
    private List<Object> sekil = new ArrayList<>();
    Timer timer;

    public Panel(int x) {
        this.setFocusable(true);
        timer = new Timer(20, this);
        timer.start();
        addRect(x);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        for (Object s : sekil) {
            if (s instanceof Rect) {
                ((Rect) s).paint(g);
            }
        }

    }

    public void update() {

        for (Object s : sekil) {
            if (s instanceof Rect) {
                ((Rect) s).update();
            }
        }

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        repaint();
        update();

    }

    private void addRect(int i) {
        for (int a = 0; a < i; a++) {
            sekil.add(new Rect());
        }
    }

}

React Class;

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;

public class Rect {
    private final static int GENISLIK = 800;
    private final static int YUKSEKLIK = 600;
    private final static int eksi = 20;

    Random r = new Random();
    int x = r.nextInt(670);
    int y = r.nextInt(525);
    int genislik = (int) Math.floor(Math.random() * (70 - 20 + 1) + 20);
    int yukseklik = (int) Math.floor(Math.random() * (50 - 15 + 1) + 15);
    int adım = (int) Math.floor(Math.random() * (10 - 1 + 1) + 1);
    float f1 = r.nextFloat();
    float f2 = r.nextFloat() / 2f;
    float f3 = r.nextFloat() / 2f;

    public void paint(Graphics g) {
        Color rastgeleRenk = new Color(f1, f2, f3);
        g.setColor(rastgeleRenk);
        g.fillRect(x, y, genislik, yukseklik);
    }

    public void update() {
        if ((x + genislik) > (GENISLIK - eksi) || x < 0) {
            adım = -adım;
        }
        x = x + adım;
    }
}

I tried so many different ways to solve this problem but I can't see my fault. Maybe I made mistake thread section or made server connection false. I don't find any solution.
Thanks to all concerned.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source