Hola que tal, tengo el siguiente problema:
Estoy desarrollando un socket servidor, lo estoy programando mediante el entorno grafico en netbeans; me funciona de hecho muy bien,, pero cuando intento mostrar en un label ó en una caja de texto los mensajes que llegan al socket servidor,, no los muestra en pantalla,, quisiera saber que estoy haciendo mal, o que me falta.
Cuando imprimo en patalla con
Código:
System.out.println(Valor);
, si me funciona pero yo necesito mostrar los mensajes en un jText Area o en una caja de texto.

muchas gracias.

y aqui el codigo:
Código:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class server_final extends javax.swing.JFrame {

    ServerSocket servidor;
    Socket conexion;
    int contador = 1;
    int puerto;
    String mensaje="";
    String aux;
    String Valor="";
    BufferedReader entrada=null;
    PrintWriter salida=null;
    public boolean RecepcionOk;
    public boolean error;

    /** Creates new form server_final */
    public server_final() {
        super( "Servidor" );
        initComponents();
        jLabel3.setText("Hola");
    }

    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        campoIntroducir = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        areaPantalla = new javax.swing.JTextArea();
        jSeparator1 = new javax.swing.JSeparator();
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        caja1 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(null);

        campoIntroducir.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        getContentPane().add(campoIntroducir);
        campoIntroducir.setBounds(60, 250, 280, 40);

        areaPantalla.setColumns(20);
        areaPantalla.setRows(5);
        areaPantalla.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jScrollPane1.setViewportView(areaPantalla);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(60, 120, 280, 110);
        getContentPane().add(jSeparator1);
        jSeparator1.setBounds(60, 240, 280, 10);

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel1.setText("Servidor");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(150, 10, 70, 30);

        jButton1.setText("Configurar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(180, 70, 90, 30);
        getContentPane().add(caja1);
        caja1.setBounds(80, 70, 70, 30);

        jLabel2.setText("Puerto");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(100, 50, 50, 20);
        getContentPane().add(jLabel3);
        jLabel3.setBounds(60, 300, 160, 30);

        jButton2.setText("jButton2");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton2);
        jButton2.setBounds(340, 70, 73, 23);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-449)/2, (screenSize.height-378)/2, 449, 378);
    }// </editor-fold>                        

                                        

// procesar la conexión con el cliente
private void ServidorSockets() {
   Thread tr=new Thread(){
       public void run(){
            try {
                servidor = new ServerSocket(2041);
                 while(true){
                     conexion=servidor.accept();
                     ConexionSocket();   
                 }
            }
            catch (IOException e){
                e.printStackTrace();
            }
        }
    };
    tr.start();
 }

public void ConexionSocket () throws IOException {
    Thread tr1=new Thread(){
        public void run(){
        RecepcionOk=false;
             try{
                 entrada=new BufferedReader(new InputStreamReader (conexion.getInputStream()));
                 salida=new PrintWriter(new OutputStreamWriter(conexion.getOutputStream()),true);
                 while ((Valor=entrada.readLine()) != null) {
                    mostrarMensaje(Valor);
                    System.out.println(Valor);
                    jLabel3.setText("El valor es::"+Valor);
                }
              }
                catch (Exception e){
                    CerrarSocket();
                    e.printStackTrace();
                }
        }
    };
   tr1.start();
   System.out.println(tr1.isAlive());
}

private void CerrarSocket(){
    try{
        salida.close();
        entrada.close();
        conexion.close();
    }
    catch( IOException excepcionES ) {
         excepcionES.printStackTrace();
      }
}

     private void mostrarMensaje( final String mensajeAMostrar )
   {

      SwingUtilities.invokeLater(
         new Runnable() {  // clase interna para asegurar que la GUI se actualice apropiadamente
            public void run() // actualiza areaPantalla
            {
               areaPantalla.append( mensajeAMostrar );
               areaPantalla.setCaretPosition(
                  areaPantalla.getText().length() );
            }
         }  // fin de la clase interna
      ); // fin de la llamada a SwingUtilities.invokeLater
   }
   
    /**
    * @param args the command line arguments
    */

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new server_final().setVisible(true);
                server_final test=new server_final();
                test.ServidorSockets();
            }
        });
    }


La solución completa para el hilo: aquí.