Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Agrefar for en setText de jlabel

Estas en el tema de Agrefar for en setText de jlabel en el foro de Java en Foros del Web. Aqui el codigo que me funciona bien @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original jLabel1. setText ( "<html><table>"                 ...
  #1 (permalink)  
Antiguo 28/08/2015, 17:39
Avatar de soy_nicanor  
Fecha de Ingreso: mayo-2010
Mensajes: 374
Antigüedad: 13 años, 11 meses
Puntos: 3
Agrefar for en setText de jlabel

Aqui el codigo que me funciona bien
Código Java:
Ver original
  1. jLabel1.setText("<html><table>"
  2.                 +"<tr><td><b>Descripcion</b></td><td><b>Precio</b></td></tr>"
  3.                
  4.                 +"<tr><td>5</td><td>5.5</td></tr>"
  5.                 +"</table></html>");

Quiero agregar un for y no me funciona
Algo asi:

Código Java:
Ver original
  1. jLabel1.setText("<html><table>"
  2.                 +"<tr><td><b>Descripcion</b></td><td><b>Precio</b></td></tr>"
  3.                 for(int i=0;i<10;i++){
  4.                     +"<tr><td>"+i+"</td><td>5.5</td></tr>"
  5.                 }
  6.                 +"</table></html>");

Abra alguna solución para que funcione???
__________________
Muy Feliz

Última edición por soy_nicanor; 28/08/2015 a las 19:27
  #2 (permalink)  
Antiguo 29/08/2015, 06:28
Avatar de jc_moj  
Fecha de Ingreso: septiembre-2009
Ubicación: Andalucía
Mensajes: 137
Antigüedad: 14 años, 7 meses
Puntos: 12
Respuesta: Agrefar for en setText de jlabel

Hola

No conozco JLabel, pero viendo la documentación, ese método acepta un String, por lo que tendrás que generar primero la cadena y luego pasársela a setText.

Un saludo
  #3 (permalink)  
Antiguo 29/08/2015, 08:54
inazense
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Agrefar for en setText de jlabel

Un jlabel trabaja con Strings. Le estás pasando un entero. Realiza la conversión con el método valueOf de la clase String y debería funcionar, tal que así

Código Java:
Ver original
  1. jLabel1.setText("<html><table>"
  2.                 +"<tr><td><b>Descripcion</b></td><td><b>Precio</b></td></tr>"
  3.                 for(int i=0;i<10;i++){
  4.                     +"<tr><td>"+String.valueOf(i)+"</td><td>5.5</td></tr>"
  5.                 }
  6.                 +"</table></html>");
  #4 (permalink)  
Antiguo 29/08/2015, 09:52
Avatar de soy_nicanor  
Fecha de Ingreso: mayo-2010
Mensajes: 374
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: Agrefar for en setText de jlabel

Gracias inazense

Me sigue saliendo error setText de Jlabel no acepta For

__________________
Muy Feliz
  #5 (permalink)  
Antiguo 29/08/2015, 10:08
inazense
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Agrefar for en setText de jlabel

Pero porque estás interrumpiendo sin más la cadena de texto.
Yo no acabo de entender como quieres mostrar el JLabel, sorry. ¿Qué es lo que quieres que aparezca por pantalla?

Según lo que sea puedes crear un String, concatenarle los resultados del for y luego hacer un setText a ese String directamente
  #6 (permalink)  
Antiguo 29/08/2015, 10:27
Avatar de soy_nicanor  
Fecha de Ingreso: mayo-2010
Mensajes: 374
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: Agrefar for en setText de jlabel

Quiero mostrar así en Jlabel con For
__________________
Muy Feliz
  #7 (permalink)  
Antiguo 29/08/2015, 11:22
Avatar de jc_moj  
Fecha de Ingreso: septiembre-2009
Ubicación: Andalucía
Mensajes: 137
Antigüedad: 14 años, 7 meses
Puntos: 12
Respuesta: Agrefar for en setText de jlabel

Como te puse más arriba, tienes que prepara la cadena antes de pasársela al jlabel, algo así:

Código Java:
Ver original
  1. String cadena = "<html><table><tr><td><b>Descripcion</b></td><td><b>Precio</b></td></tr>";
  2.  
  3. for(int i = 0; i < 10; i++) {
  4.     cadena += "<tr><td>" + i + "</td><td>5.5</td></tr>";
  5. }
  6.    
  7. cadena += "</table></html>";
  8.  
  9. jLabel1.setText(cadena);

Saludos
  #8 (permalink)  
Antiguo 29/08/2015, 11:58
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
Respuesta: Agrefar for en setText de jlabel

No puedes meter un for dentro de la asignación de texto del JLabel, y pretender que funcione.
Si quieres calcular ese texto, debes de calcularlo a parte y una vez que lo tengas calculado a parte lo metes ahí. Por ejemplo, puedes utilizar una variable para concatenar texto, y una vez que lo tengas todo el texto calculado lo metes en tu asignación de texto. O bien, puedes tener una función String que te devuelva un texto... y llamarla en la asignación de texto. Pero no hacer el cálculo dentro de la asignación como estás pretendiendo.


Prueba el siguiente código:
Código:
String miVariable=" - Texto Medio - ";
JLabel1.setText("Texto Inicio");
JLabel1.setText(JLabel1.getText.concat(miVariable));
JLabel1.setText(JLabel1.getText.concat("Texto Final"));
System.out.println(JLabel1.getText);
Que es el mismo que:
Código:
String miVariable=" - Texto Medio - ";
JLabel1.setText("Texto Inicio");
JLabel1.setText(JLabel1.getText+miVariable);
JLabel1.setText(JLabel1.getText+"Texto Final");
System.out.println(JLabel1.getText);
Solo que para concatenar textos es más aconsejable usar el método concat, porque si no, a veces vas a concatenar números que los quieres como texto y resulta que te los suma. Y otros errores varios que te pueden surgir al concatenar texto. Si lo que quieres es concatenar textos usa el método de String diseñado específicamente a concatenar textos. Así te ahorrarás errores.

Última edición por Kritik; 29/08/2015 a las 12:15
  #9 (permalink)  
Antiguo 29/08/2015, 12:16
Avatar de soy_nicanor  
Fecha de Ingreso: mayo-2010
Mensajes: 374
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: Agrefar for en setText de jlabel

Gracias a todos
Ya me funciono
__________________
Muy Feliz

Etiquetas: jlabel, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:28.