【发布时间】:2010-10-02 04:29:52
【问题描述】:
如何创建既具有样式又具有自定义字体的 Java/Swing 文本组件?我想用红色突出显示一小部分文本,但同时使用自定义(通过Font.createFont 嵌入)字体。 JLabel 接受 HTML 文本,它允许我突出显示部分文本,但在呈现 HTML 时它会忽略字体设置。其他文本组件(例如 JTextArea)将使用自定义字体,但它们不会呈现 HTML。最简单的方法是什么?
以下是使用 JTextPane 失败的示例:
JTextPane textPane = new JTextPane();
textPane.setFont(myCustomFont);
textPane.setText(text);
MutableAttributeSet attributes = new SimpleAttributeSet();
StyleConstants.setForeground(attributes, Color.RED);
textPane.getStyledDocument().setCharacterAttributes(
text.indexOf(toHighlight),
toHighlight.length(),
attributes, true
);
这成功地显示了文本,其中“toHighlight”部分以红色突出显示,但它不使用 myCustomFont。请注意,我可以使用StyleConstants.setFontFamily() 设置字符串字体,但不能使用自定义字体。
【问题讨论】: