Atualizar a tela

Por favor me ajudem estou com essa código e nao consigo atualizar o valor um embaixo do outro, quando pego do teclado.

[code]
import java.awt.Dimension;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Servidor {

public static void main(String[] args) {

    //Declaro o ServerSocket
    ServerSocket serv = null;

    //Declaro o Socket de comunicação
    Socket s = null;

    //Declaro o leitor para a entrada de dados
    BufferedReader entrada = null;

    try {

        //Cria o ServerSocket na porta 7000 se estiver disponível
        serv = new ServerSocket(2222);

        //Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
        JFrame frame = new JFrame("Comunicacao entre processos");

        // cria e define o tamanho da janela

        frame.setSize(new Dimension(400, 140));


        JLabel label = new JLabel("Esperando alguem se conectar...");
        frame.getContentPane().add(label);

        // mostra a janela
        frame.setVisible(true);
        //
        System.out.print("Esperando alguem se conectar...");
        JLabel labe3 = new JLabel("Esperando alguem se conectar...");
        frame.getContentPane().add(labe3);
        frame.repaint();
        s = serv.accept();


        System.out.println("Conectou!");
        JLabel labe2 = new JLabel("Conectou!");
        frame.getContentPane().add(labe2);
        frame.repaint();
        String a = "";
        while (true) {
            //Cria um BufferedReader para o canal da stream de entrada de dados do socket s
            entrada = new BufferedReader(new InputStreamReader(s.getInputStream()));

            //Aguarda por algum dado e imprime a linha recebida quando recebe
            System.out.println("Saida: " + entrada.readLine());
            a = entrada.readLine().toString();
            JLabel x1 = new JLabel(a);
            frame.getContentPane().add(x1);
            frame.repaint();

            //Encerro o socket de comunicação
            //s.close();

            //Encerro o ServerSocket
            //serv.close();

        }

        //trata possíveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io
    } catch (IOException e) {

        //Imprime uma notificação na saída padrão caso haja algo errado.
        System.out.println("Erro: " + e.getMessage());

    }

}

}[/code]

se quiserem testar segue o cliente

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;

public class Cliente {

    public static void main(String[] args) {

        //Declaracao do socket cliente
        Socket cliente = null;

        //Declaracao a Stream de saida de dados
        PrintStream saida = null;

        try {
            System.out.println("Iniciando cliente...");

            //Cria o socket com o recurso desejado na porta especificada
            cliente = new Socket("127.0.0.1", 2222);
            System.out.println(cliente);

            //Cria a Stream de saida de dados
            saida = new PrintStream(cliente.getOutputStream());

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

            //Imprime uma linha para a stream de saída de dados
            while (true) {
                System.out.print("Digite: ");
                saida.println(teclado.readLine());
            }

            //Encerra o socket cliente
            //s.close();
            //Trata possíveis exceções
        } catch (IOException e) {

            System.out.println("Erro: " + e.getMessage());

        }

    }

O cliente ainda vou fazer a tela e tb estu com duvidas de como fazer nao tenho muida nocao em swing na parte tecnica, agradeco desde ja

Olá

Tente usar validate ao invés de repaint.
Quando trabalhei com Swing algumas parte do sistema que tinha que atualizar o repaint não fazia sem papel direito, mas contornei com o validate.

Acho que deve funcionar com você também

Espero ter ajudado
Flwsss

Você quase nunca trabalhou com Swing, certo george?

Bem, você não pode atualizar classes do Swing de fora da thread do Swing. É por isso que existem comandos como EventQueue.invokeLater ou EventQueue.invokeAndWait. Uma outra prática comum é criar uma subclasse de JFrame ou JDialog ao elaborar suas telas.