如何創建一個既有風格又有自定義字體的Java/Swing文本組件?我想用紅色突出顯示文本的一小部分,但同時使用自定義(通過Font.createFont
嵌入)字體。 JLabel接受HTML文本,該文本允許我突出顯示部分文本,但在渲染HTML時會忽略字體設置。其他文本組件(如JTextArea)將使用自定義字體,但不會呈現HTML。兩種方法最簡單的方法是什麼?如何創建既風格化又具有自定義字體的Java/Swing文本組件?
這裏是不成功使用的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()
設置字符串字體,但不能使用自定義字體。
我已經嘗試了這兩個,但仍然有同樣的問題。如果我使用StyledDocument,它會忽略任何字體設置,並堅持使用「FontFamily」設置字體,該字體只允許字符串 - 而不是自定義字體。 – Ross 2009-01-19 07:22:38
您能否顯示一個代碼片斷,顯示您使用StyledDocument完成的操作,但這不起作用? – jfpoilpret 2009-01-19 07:30:18