JLabel con varias lineas
Saludos compañeros, quiero en un JLabel ir añadiendo sucesivamente cosas:
es decir, por ejemplo, primero añadir la cadena "esto", luego en un bucle posterior la cadena "es un" y luego la cadena "ejemplo", de manera que quede:
esto
es un
ejemplo
Existe alguna manera de hacerlo, o si no, algun otro metodo para hacerlo, xo de manera que al presentar dicho componente por pantalla quede como el JLabel, es decir, con el mismo color de fondo d la aplicacion, y sin bordes alrededor ??? Espero que me haya explicado bien. Por favor espero vuestras respuestas. Gracias por adelantado.
es decir, por ejemplo, primero añadir la cadena "esto", luego en un bucle posterior la cadena "es un" y luego la cadena "ejemplo", de manera que quede:
esto
es un
ejemplo
Existe alguna manera de hacerlo, o si no, algun otro metodo para hacerlo, xo de manera que al presentar dicho componente por pantalla quede como el JLabel, es decir, con el mismo color de fondo d la aplicacion, y sin bordes alrededor ??? Espero que me haya explicado bien. Por favor espero vuestras respuestas. Gracias por adelantado.
No se si funcionará, pero puedes intentar crear un String con varias lĂneas. Este cĂłdigo sĂłlo funcionará en jdk 1.5.0:
public static String cadenaLineas(String... lineas){
String saltoDeLinea=System.getProperty(line.separator);
StringBuilder cadena=new StringBuilder();
for(String linea:lineas)
cadena.append(linea);
cadena.append(saltoDeLinea);
}
return cadena.toString();
}
Espero que te sirva.
public static String cadenaLineas(String... lineas){
String saltoDeLinea=System.getProperty(line.separator);
StringBuilder cadena=new StringBuilder();
for(String linea:lineas)
cadena.append(linea);
cadena.append(saltoDeLinea);
}
return cadena.toString();
}
Espero que te sirva.
Se puede mejorar el anterior mĂ©todo de modo que acepte cualquier tipo de parámetro y darle más potencia al mismo. Por ejemplo, imagina que quieres mostrar la fecha en el botĂłn, o un nĂşmero. Esto se conseguirĂa asĂ:
public static<E> String cadenaLineas(E... lineas){
String saltoDeLinea=System.getProperty("line.separator");
StringBuilder cadena=new StringBuilder();
for(E elemento:lineas){
cadena.append(elemento);
cadena.append(saltoDeLinea);
}
return cadena.toString();
}
De este modo podemos compilar la siguiente lĂnea y que funcione:
System.out.println(cadenaLineas("La fecha es:",new java.util.Date(),10));
public static<E> String cadenaLineas(E... lineas){
String saltoDeLinea=System.getProperty("line.separator");
StringBuilder cadena=new StringBuilder();
for(E elemento:lineas){
cadena.append(elemento);
cadena.append(saltoDeLinea);
}
return cadena.toString();
}
De este modo podemos compilar la siguiente lĂnea y que funcione:
System.out.println(cadenaLineas("La fecha es:",new java.util.Date(),10));
No te he explicado como se usa el método. Bueno, lo importante es quedarse con la idea, no hacer un método, aunque si es algo que haces con regularidad, es interesante crear una clase Cadenas o algo asà que te proporcione métodos al respecto.
Ejemplo de uso:
...
Label.setText(cadenaLineas("Hola","a","todos"));
Incluso el mĂ©todo podĂas hacerlo de modo que se pudieran meter elementos de otro tipo, aprovechando que append está sobrecargado para todo tipo de elementos:
public static<E> String cadenaLineas(E... lineas){
String saltoDeLinea=System.getProperty(line.separator);
StringBuilder cadena=new StringBuilder();
for(E linea:lineas)
cadena.append(linea);
cadena.append(saltoDeLinea);
}
return cadena.toString();
}
AsĂ puedes hacer, por ejemplo:
System.out.println(cadenaLineas("La fecha es:",new java.util.Date(),10));
y mostrar cualquier tipo de dato, lo que, aunque ahora mismo no te parezca útil, hace que el método sea más potente.
Ejemplo de uso:
...
Label.setText(cadenaLineas("Hola","a","todos"));
Incluso el mĂ©todo podĂas hacerlo de modo que se pudieran meter elementos de otro tipo, aprovechando que append está sobrecargado para todo tipo de elementos:
public static<E> String cadenaLineas(E... lineas){
String saltoDeLinea=System.getProperty(line.separator);
StringBuilder cadena=new StringBuilder();
for(E linea:lineas)
cadena.append(linea);
cadena.append(saltoDeLinea);
}
return cadena.toString();
}
AsĂ puedes hacer, por ejemplo:
System.out.println(cadenaLineas("La fecha es:",new java.util.Date(),10));
y mostrar cualquier tipo de dato, lo que, aunque ahora mismo no te parezca útil, hace que el método sea más potente.
los JLabel aceptan còdigo HTML, y te sirve justo para lo que quieres, prueba a hacer esto:
JLabel label = new JLabel( "<html>Esto<br>es un<br>ejemplo</html>");
Para que funcione, las etiquetas de html deben abrir y cerrar forzosamente el String
JLabel label = new JLabel( "<html>Esto<br>es un<br>ejemplo</html>");
Para que funcione, las etiquetas de html deben abrir y cerrar forzosamente el String
