Foro de elhacker.net

Programación => Java => Mensaje iniciado por: NaTxosS en 29 Noviembre 2014, 11:54 am



Título: No me aparece el String en JTextField aunque si lo contiene
Publicado por: NaTxosS en 29 Noviembre 2014, 11:54 am
a mi JTextFiel le meto un String con el metotdo .setText(); pero no aparece en la interfaz.
El string le llega porque después de hacer el setText(); he hecho un System.out.print(txtEtiqueta.getText()) y me sale en la consola el string que debería salirme en el JTextField (txtEtiqueta), que en cambio me sale en blanco, ¿porque puede estar pasando esto?

Gracias de antemano


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: AlvRP4104 en 29 Noviembre 2014, 16:55 pm
¡Buenas NaTxosS!

¿Sería posible que estuvieras cambiando el valor de texto de otro JTextField?

Si no, no entiendo que te puede estar pasando, suerte.


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: NaTxosS en 29 Noviembre 2014, 17:24 pm
No, eso no es, lo he comprobado, ademas me pasa con 3 JtextField contenidos en el mismo panel que otros JTextField donde me funciona correctamente, la única diferencia que tienen estos 3 con los demás es que el setText lo hago desde un evento de un JDialog (pero no creo que sea por esto, probando hice un método llamado desde este evento que pongo a continuación que es donde esta el problema, al que le pasaba los 3 String pero sigue sin funcionar).
Código
  1. private void btnAceptarClientesActionPerformed(java.awt.event.ActionEvent evt) {                                                  
  2.  
  3.        int filaSelecc;
  4.  
  5.        filaSelecc = tblClientes.getSelectedRow();
  6.        if (filaSelecc == -1) {
  7.            JOptionPane.showMessageDialog(null, "Debes seleccionar un cliente");
  8.        } else {
  9.            codCliente = (String)tblClientes.getValueAt(filaSelecc, 0);
  10.            cliente = (String)tblClientes.getValueAt(filaSelecc, 1);
  11.            descuento = (String)tblClientes.getValueAt(filaSelecc, 3);
  12.            txtCodigoCliente.setText(codCliente);
  13.            txtCliente.setText(cliente);
  14.            txtDescuento.setText(descuento);
  15.        }
  16.        dialogoClientes.dispose();
  17.    }    

Gracias


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: AlvRP4104 en 29 Noviembre 2014, 17:46 pm
Si en lugar de coger el texto de la variable le introduces tú uno manualmente, ¿tampoco funciona?

Código
  1. ...
  2. txtCodigoCliente.setText("Texto de prueba");
  3. ...


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: NaTxosS en 29 Noviembre 2014, 18:29 pm
negativo, no funciona :-(


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: ivancea96 en 29 Noviembre 2014, 18:36 pm
Asegúrate de que el elemento que ves es el JTextField del que hablas. Fíjate en si tuviese otro elemento encima.


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: NaTxosS en 29 Noviembre 2014, 18:53 pm
tampoco es eso


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: ivancea96 en 29 Noviembre 2014, 18:57 pm
¿Te funcionan los otros JTextField?


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: NaTxosS en 29 Noviembre 2014, 21:09 pm
si, pero los 3 que aparecen en el código que os he pasado no.

A ver, esto es cosa de brujería parece, he vuelto a hacer un método (public void cargarCliente()) que hace los 3 setText() y los 3 string's los he declarado como globales. Este nuevo método lo he llamado desde otro evento dándole otros valores diferentes a los 3 string Y ME APARECEN EN LOS 3 JTextField!!! pero vuelvo a llamarlo desde el evento en cuestión y nada, no aparecen, he hecho un debug, fijaros (en el enlace siguiente) como los watch tienen los valores que deseo que aparezcan en los 3 textField:

http://subefotos.com/ver/?a0051b602fd4c69b07733fb7173eb51ao.jpg (http://subefotos.com/ver/?a0051b602fd4c69b07733fb7173eb51ao.jpg)

También he hecho breakpoint en cada linea del método cargarCliente() y se siguen manteniendo los string deseados.


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: #!Mitsu en 29 Noviembre 2014, 22:41 pm
Con permiso ;)

En tu código no veo nada incorrecto. Si dices, que ni metiendo manualmente el String en el TextField lo muestra, lo único que se me ocurre es que dicho else no se está ejecutando.

Trata de colocar un poco más de código en tu próxima respuesta para poder apreciar mejor.


Título: Re: No me aparece el String en JTextField aunque si lo contiene
Publicado por: NaTxosS en 30 Noviembre 2014, 11:22 am
Vale, ya lo he solucionado.

El problema no estaba en el código en el que nos estábamos fijando, os cuento, el problema era que a la hora de cargar la tabla (que aparece en el JDialog) con los datos de los cuales extraigo los String que necesito para los dichosos JTextField, llamaba a otra clase que tengo para acceder a mi base de datos en la que se cargan las filas de la tabla (de mi JDialog, es decir, en mi ventanaPrincipal(JFrame)), que pasaba que lo que hacia era ventanaPrincipal = new VentanaPrincipal(); con lo que eso era mi error porque  creo  (soy novato) que ahí estaba generando otra nueva ventanaPrincipal, no?

Así que lo que he hecho ha sido pasar mi ventanaPrincipal a la clase de mi acciones con la base de datos como parametro:

Código
  1. accionesClientes = new AccionesClientes(this);
  2.        accionesClientes.mostrarClientes();

donde this es mi ventanaPrincipal

y en la otra clase:
Código
  1. public AccionesClientes(VentanaPrincipal ventanaP) {
  2.  
  3.        this.setVentanaPrincipal(ventanaP);        
  4.        //serviceC = new ServiceCliente();
  5.    }
  6.  
  7.    public VentanaPrincipal getVentanaPrincipal() {
  8.  
  9.        return ventanaP;
  10.    }
  11.  
  12.    public void setVentanaPrincipal(VentanaPrincipal ventanaPrincipal) {
  13.  
  14.        this.ventanaP = ventanaPrincipal;
  15.    }
  16. try {
  17.            if (tablaCompleta) {
  18.                consulta = 3;
  19.                sql = "select * from clientes";
  20.                r = gestionSql.cogerTabla(sql);
  21.                String fila[] = new String[4];
  22.                while (r.next()) {
  23.                    fila[0] = r.getString("cod_cliente");
  24.                    fila[1] = r.getString("nombreyapellido");
  25.                    fila[2] = r.getString("cliente_habitual");
  26.                    fila[3] = r.getString("descuento");
  27.                    getVentanaPrincipal().getTablaClientes().addRow(fila);
  28.                }
  29.                getVentanaPrincipal().getTblClientes().setModel(getVentanaPrincipal().getTablaClientes());
  30.                getVentanaPrincipal().getDialogoClientes().setSize(700,350);
  31.                getVentanaPrincipal().getDialogoClientes().setLocation(100,100);
  32.                getVentanaPrincipal().getDialogoClientes().setResizable(false);
  33.                getVentanaPrincipal().getDialogoClientes().setModal(true);
  34.                getVentanaPrincipal().getDialogoClientes().setVisible(true);
  35.            } else {
  36.                consulta = 1;
  37.                sql = "select * from clientes where cod_cliente ="+ codigo;
  38.                respuesta = gestionSql.executeSql(sql, columna, consulta);
  39.            }
  40.        } catch (Exception e) {
  41.            JOptionPane.showMessageDialog(null, "Error al generar el código SQL");
  42.        }

Ahora si funciona. Muchas gracias a todos  ;D