在JEditorPane或JTextPane中设置HTML样式

时间:2010-03-23 12:49:31

标签: java html swing jeditorpane

我想在JEditorPane或JTextPane中显示HTML,但我希望样式(字体大小)来自外观。有没有办法做到这一点,还是你必须使用嵌入式HTML样式?

以下是一个例子:

epText = new JEditorPane("text/html", content);

StyleSheet ss = ((HTMLEditorKit)epText.getEditorKit()).getStyleSheet();
ss.addRule("p {font-size:" + FontManager.getManager().getFontSize() + "}");
HTMLEditorKit kit = (HTMLEditorKit) epText.getEditorKit();
kit.setStyleSheet(ss);

epText.setEditorKit(kit);

每当我设置编辑器套件时,所有文本都会消失。我是否每次都需要设置文本?

2 个答案:

答案 0 :(得分:3)

HTMLEditorKit的Java API

中深入了解此片段
  

从当前LAF定制

     

HTML提供了一组众所周知的功能而没有完全指定   显示特性。 Swing有   它的主题机制   外观实现。它是   对于外观和感觉来说是理想的   饲料显示特征进入   HTML视图。视力不佳的用户   例如,想要高对比度   比典型字体大。

     

对此的支持由StyleSheet类提供。该   HTML的呈现方式可以   受到环境影响很大   EditorKit上的StyleSheet属性。

编辑:设置编辑器套件时,它会卸载旧套件并安装新套件。这会改变基础模型,这就是文本“消失”的原因。 Read the API for more info

但您可能不需要重新创建整个套件......只需在您的风格中添加新的工作表。

答案 1 :(得分:0)

设置L& F。

后,从main方法调用此方法
public static void setDefaultStyle()
{
    // looks like WTF but that is the way to set default CSS
    StyleSheet sheet=new HTMLEditorKit().getStyleSheet();
    // add your rules
    sheet.addRule("...");
    sheet.addRule("...");
}

编辑:至少这应该适用于JTextPane