在JTextArea或JTextPane中设置样式文本

时间:2012-02-04 14:08:17

标签: java html swing jtextpane

基本上,我有一个JTextPane来保存一些我想要样式的文本。 JTextArea对我来说会更好用但是我告诉你不能在这些样式中设置样式吗?

但是,JTextPane似乎没有正确的样式。例如,只返回包含HTML的以下代码:

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);
}

当用户与界面交互时,我希望能够在JTextPane中设置一些文本的样式,但到目前为止,它只返回HTML仍在的字符串!救命啊!

3 个答案:

答案 0 :(得分:21)

如果您想在JTextPane中填充Html内容,则必须设置为JTextPane#setContentType("text/html");,例如here

编辑:

JEditorPanes / JTextPanes是实现StyledDocumentMutableAttributeSet和自定义Highlighte r的另一种方式,例如here

A.M。方式是没有使用Html syntax

答案 1 :(得分:6)

让Java知道它将是使用setContentType方法的HTML。

k.setContentType("text/html"); 

答案 2 :(得分:3)

我使用外观(物质)并且调用setContentType("text/html")时显示的字体有问题。我通过致电解决了这个问题:

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

另一种选择是将HTML文本包装在JLabel中。按照您的示例,代码为:

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