在不使用HTML的情况下在JTextPane中创建单行粗体

时间:2011-08-31 10:22:53

标签: java html swing jtextarea

我正在尝试在我的JTextPane中加粗一行,但我没有做任何工作。 我尝试使用新的粗体字体来编写该行,但它没有帮助。

 Font font = new Font("Consolas", Font.BOLD, 11);
            textPane.setFont(font);
            textPane.setText(textPane.getText() + "\n" + getTimeStamp() + sender + ": " + message);
            textPane.setFont(defaultFont);

我该怎么做?

2 个答案:

答案 0 :(得分:7)

最简单的方法是从JTextPane获取StyledDocument,并使用setCharacterAttributes()方法。

StyledDocument对象上的setCharacterAttributes方法允许您设置特定字符范围,一组属性,可以包括BOLD。

请参阅Javadoc for more info

一些示例代码可能是

// set chars 4 to 10 to Bold
SimpleAttributeSet sas = new SimpleAttributeSet(); 
StyleConstants.setBold(sas, true);
textPane.getStyledDocument().setCharacterAttributes(4, 6, sas, false);

答案 1 :(得分:2)

需要注意的是确保您使用的字体系列在系统上实际使用粗体字体。我开始使用Monaco(在OSX上),它只包含常规字体。直到我切换到Menlo Bold的Menlo之后,没有任何工作。

以下是一些基于Oracle示例的代码。

StyledDocument document = textPane.getStyledDocument ();
Style defaultStyle =
      StyleContext.getDefaultStyleContext ().getStyle (StyleContext.DEFAULT_STYLE);
Style regular = document.addStyle ("regular", defaultStyle);

StyleConstants.setBackground (regular, backgroundColor);
StyleConstants.setFontFamily (regular, "Menlo");
StyleConstants.setFontSize (regular, 14);

blackStyle = document.addStyle ("BlackStyle", regular);
StyleConstants.setForeground (blackStyle, Color.black);

redStyle = document.addStyle ("RedStyle", regular);
StyleConstants.setForeground (redStyle, Color.red);
StyleConstants.setBold (redStyle, true);