在JEditorPane或JTextPane中设置HTML样式

3
我希望在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个回答

3

是的。

从Java API中的HTMLEditorKit中挖掘出这个片段:

来自当前LAF的自定义

HTML提供了一组众所周知的特性,但并没有精确地指定显示特征。Swing具有其外观和感觉实现的主题机制。希望外观和感觉将显示特征馈送到HTML视图中。例如,一个视力差的用户会想要高对比度和比典型字体大的字体。

这一支持由StyleSheet类提供。可以通过在EditorKit上设置StyleSheet属性来强烈影响HTML的呈现。

编辑:当您设置Editor Kit时,它将卸载旧的工具包并安装新的工具包。这会更改底层模型,这就是为什么文本“消失”的原因。阅读API获取更多信息

但是您可能不需要重新创建整个工具包...只需向样式添加新表格即可。


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应该有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接