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, si me funciona pero yo necesito mostrar los mensajes en un jText Area o en una caja de texto.Código:System.out.println(Valor);
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í.



Citar
Marcadores