2012-02-15 7 views
9

È passato un po 'di tempo da quando ho fatto una domanda!JLabel Java, interrompi il testo alla riga successiva?

Sto sviluppando un'applicazione in Java dove vengono utilizzati JLabels. Ad ogni modo, come puoi o non potresti vedere dall'immagine qui sotto, il testo che dice Category Test viene troncato e finisce per dirlo con lo Categor.... C'è un modo in cui posso "rompere" il testo una volta che riempie la larghezza dell'etichetta? Ecco l'immagine:

enter image description here

Quello che ho fatto

ho usato un JTextPane in questo modo:

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

    StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER); 

    pane.add(text, c); 

poi ho aggiunto il mio testo, ma grazie comunque!

+0

Vorrei ottenere la stringa "Categoria" fuori da lì. È completamente inutile. Invece, potresti avere "Categorie" in una singola JLabel sopra la tua griglia. –

+0

Uhhh, quelli sono segnaposti. L'utente definirà ciò che dicono le categorie. Hai mai visto Jeopardy? –

risposta

10

JLabel s non possono farlo per impostazione predefinita. Ma gli JLabel hanno un supporto per html, quindi un JLabel con il testo <html>First Line<br />Second Line</html> apparirebbe su due righe.

Se si desidera un componente in grado di suddividere le linee da solo, dare un'occhiata a JTextArea.

+0

Per ora ho +1, ma voglio vedere se non riesco a trovare un altro modo. Grazie. –

+0

@Ken ha fatto più ricerche, 'JLabel's visualizza solo 1 riga, a meno che non si usi html. – Jeffrey

+0

D: Bene, vedrò cosa posso fare; grazie mille! –

2

Come ricordo, è necessario utilizzare un JTextArea se si desidera il textwrap. JLabel non lo fa.

1

È possibile al componente StyledLabel dal progetto open source JIDE Common Layer allo http://java.net/projects/jide-oss/.

Il problema con l'approccio html JLabel è che non esegue l'auto-wrap e circa da 20 a 40 volte più lento di un JLabel normale.

Il problema con l'approccio JTextArea o JTextPane è che ha un problema di dimensioni strano ed è anche 20 volte più lento.

StyledLabel estende JLabel. Il ritorno a capo automatico è solo una delle tante funzioni che aggiunge. E le prestazioni sono veloci quanto una semplice JLabel.

Spero che possa essere d'aiuto.