2012-02-15 25 views
9

¡Ha pasado un tiempo desde que hice una pregunta!Java JLabel, ¿salta el texto a la siguiente línea?

Estoy desarrollando una aplicación en Java donde se usan JLabels. De todos modos, como puede o no puede ver en la imagen a continuación, el texto que dice Category Test se corta y termina diciendo Categor... en su lugar. ¿Hay alguna manera de que pueda "romper" el texto una vez que rellene el ancho de la etiqueta? Aquí está la imagen:

enter image description here

Lo que hice

he usado un JTextPane así:

JTextPane text = new JTextPane(); 
    SimpleAttributeSet attr = new SimpleAttributeSet(); 

    StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER); 

    pane.add(text, c); 

Luego he añadido mi texto, pero gracias de todos modos!

+0

Me gustaría obtener la cadena de "Categoría" de allí. Es completamente innecesario. En su lugar, quizás tenga "Categorías" en un solo JLabel sobre su cuadrícula. –

+0

Uhhh, esos son marcadores de posición. El usuario definirá lo que dicen las categorías. ¿Alguna vez has visto a Jeopardy? –

Respuesta

10

JLabel s no puede hacer eso por defecto. Pero JLabel s tiene algo de soporte para html, por lo que un JLabel con el texto <html>First Line<br />Second Line</html> aparecería en dos líneas.

Si desea un componente que pueda dividir las líneas por sí mismo, eche un vistazo a JTextArea.

+0

Voy a +1 por ahora, pero quiero ver si no puedo encontrar otra manera. Gracias. –

+0

@Ken hizo más búsquedas, 'JLabel' solo muestra 1 línea, a menos que use html. – Jeffrey

+0

D: Bueno, veré lo que puedo hacer; ¡muchas gracias! –

2

Como recuerdo, debe usar un JTextArea si desea textwrap. JLabel no lo hace.

1

Puede en el componente StyledLabel del proyecto de código abierto JIDE Common Layer en http://java.net/projects/jide-oss/.

El problema con el enfoque de JLabel html es que no se envuelve automáticamente y es de 20 a 40 veces más lento que un JLabel simple.

El problema con el enfoque JTextArea o JTextPane es que tiene un problema de tamaño extraño y también es 20 veces más lento.

StyledLabel extends JLabel. El ajuste automático de línea es solo una de las muchas características que agrega. Y el rendimiento es tan rápido como un JLabel simple.

Espero que ayude.

Cuestiones relacionadas