我想在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);
每当我设置编辑器套件时,所有文本都会消失。我是否每次都需要设置文本?
答案 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
。