JFrame się nie wyświetla.

0

Witam. Piszę program typu klient-serwer. I mam taki kod, Niestety po uruchomieniu programu nie wyświetla mi się nic, ale program chodzi. Nie wyświetla się JFrame. Jednak gdy usunę metodę doRoboty z konstruktora JFrame się wyświetla. Co jest nie tak?

    private void doRoboty() {
            
        strumienieWyjsciowe = new ArrayList<PrintWriter>();
        
        try {
            
            ServerSocket serverSock = new ServerSocket(5500);
            
            while (true) {
                Socket gniazdoKlienta = serverSock.accept();
                PrintWriter pisarz = new PrintWriter(gniazdoKlienta.getOutputStream());

                strumienieWyjsciowe.add(pisarz);
                Integer n = (Integer) strumienieWyjsciowe.size();

                Thread t = new Thread(new ObslugaKlientow(gniazdoKlienta, n));
                t.start();
                System.out.println("Mamy polaczenie");
                System.out.println("Ilosc podlaczonych klientow: " + strumienieWyjsciowe.size());

                pisarz.println(strumienieWyjsciowe.size());

                pisarz.flush();
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Błąd: " + e.getMessage(), "Błąd", JOptionPane.WARNING_MESSAGE);
        }
    } 
    public Serwer2(BazaDanych x) {
        super("Serwer");
        bd = x;
        initComponents();
        setLocationRelativeTo(null);
        jLabel1.setText("SERWER");
        jLabel1.setFont(new Font("Helvetica", Font.BOLD, 24));
        jLabel1.setBounds(200, 20, 200, 20);

        if (bd.connected == false) {
            jTextArea1.append("Błąd połączenia z bazą\n");
        } else {
            jTextArea1.append("Połączono z bazą\n");
            doRoboty();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Błąd: " + e.getMessage(), "Błąd", JOptionPane.WARNING_MESSAGE);
        }
    }
1

Program siedzi w nieskończonej pętli

while (true){...}

.

0

Tak, ale najpierw chyba wszystko rysuje dopiero potem wchodzi w pętle? Jak to naprawić?

1

Puścić to w osobnym wątku.

1

Spróbuj też zmienić kolejność, wpierw wyświetl okno, potem wejdź w pętlę. Teraz kolejność jest chyba inna. Gdzie jest wywołanie setVisible(true)?

1 użytkowników online, w tym zalogowanych: 0, gości: 1