Originariamente inviato da Patrick Jane
codice:
VisualHTML() {
campo = new JTextPane();
campo.setContentType("text/html");
campo.setEditable(false);
campo.addHyperlinkListener(this);
addWindowListener(new WindowsAdapter(this));
JScrollPane barra = new JScrollPane(campo);
add(barra,BorderLayout.CENTER);
}
Uhm ... tu lo stai usando con contenuto HTML (quindi HTMLDocument che è una implementazione specifica di StyledDocument).
Ma anche in questo caso credo proprio non si possa fare.
Prendiamo questo documento:
codice:
<html><body>blabla <span style='border:1px solid black;color:red'>Bordato?</span> blabla</body></html>
Se tu lo prendi, lo metti dentro un file .html e lo apri da un qualunque moderno browser (IE, Firefox ecc...) vedi che la scritta Bordato? è realmente bordata e in rosso. Cioè la proprietà border in CSS viene applicata e rispettata.
Ora prova a metterlo nel JTextPane:
codice:
import java.awt.*;
import javax.swing.*;
public class TestFrame extends JFrame {
public TestFrame() {
super("Test Frame");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(500, 400);
JTextPane textPane = new JTextPane();
textPane.setContentType("text/html");
textPane.setText("<html><body>blabla <span style='border:1px solid black;color:red'>Bordato?</span> blabla</body></html>");
getContentPane().add(new JScrollPane(textPane));
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TestFrame f = new TestFrame();
f.setVisible(true);
}
});
}
}
E vedrai che non si vede il bordo (il testo è però rosso). Il motivo è che il rendering di HTML in Swing è parecchio limitato per quanto riguarda il supporto a CSS.