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

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

4

2 回答 2

3

是的。

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

当前 LAF 的定制

HTML 提供了一组众所周知的特性,但并未准确指定显示特性。Swing 的外观实现有一个主题机制。外观和感觉将显示特性馈送到 HTML 视图中是可取的。例如,视力不佳的用户会想要高对比度和比典型字体更大的字体。

对此的支持由StyleSheet类提供。HTML 的显示会受到 EditorKit 上 StyleSheet 属性设置的严重影响。

编辑:设置编辑器工具包时,它会卸载旧工具包并安装新工具包。这改变了底层模型,这就是文本“消失”的原因。 阅读 API 了解更多信息

但是您可能不需要重新创建整个套件……只需为您的样式添加一张新表即可。

于 2010-03-23T13:03:06.880 回答
0

main设置 L&F 后从方法中调用它。

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.

于 2010-03-23T14:46:53.867 回答