2012-02-04 22 views
13

Fondamentalmente, ho un JTextPane per contenere del testo che desidero modellare. JTextArea sarebbe stato migliore per me da usare, ma mi è stato detto che non è possibile modificare il testo in questi?Stile del testo in un JTextArea o JTextPane

Tuttavia, il JTextPane non sembra funzionare correttamente. Ad esempio, il seguente codice è appena tornato con il codice HTML incluso:

public static void main(String[] args) { 
    JFrame j = new JFrame("Hello!"); 
    j.setSize(200,200); 
    JTextPane k = new JTextPane(); 
    k.setText("<html><strong>Hey!</strong></html>"); 
    j.add(k); 
    j.setVisible(true); 
} 

io voglio essere in grado per lo stile proprio del testo in un JTextPane quando un utente interagisce con l'interfaccia, ma finora, restituisce solo il stringa con l'HTML ancora in! Aiuto!

risposta

6

Lascia che Java sappia che sarà HTML usando il metodo setContentType.

k.setContentType("text/html"); 
3

io uso un look and feel (sostanza) e chiamando setContentType("text/html") ha problemi con il carattere visualizzato. Ho risolto chiamando:

textPane.putClientProperty(JTextPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE); 

Un'altra opzione è avvolgendo il testo HTML in un JLabel. Seguendo il tuo esempio, il codice è:

JTextPane k = new JTextPane(); 
k.insertComponent(new JLabel("<html><strong>Hey!</strong></html>")); 
+0

usando 'JTextArea' spesso è meglio che usare' 'JLabel' perché scorre JTextArea' meglio in un' JScrollPane' e permette all'utente di selezionare e copiare il testo. Grazie per le informazioni su Sostanza Look and Feel. Lo uso anche perché la mancia fosse utile. – Enwired

Problemi correlati