在JTextArea中显示样式化内容

时间:2016-08-10 08:13:31

标签: java performance swing styles jtextarea

我想知道是否有办法在JTextArea中设置文本样式;

我必须插入文本行,每行包含可能具有不同样式和内容类型的段;内容类型将决定与其相关的细分可用的操作。

  • 我检查了JTextPane和JEditorPane,发现它们太复杂,速度慢,不太适应我的需要。 我想出的最佳解决方案是扩展BasicTextUI和PlainDocument类。

可以用另一种方式吗?有什么建议来提升表现吗? 谢谢。

1 个答案:

答案 0 :(得分:2)

  

我检查了JTextPane和JEditorPane,发现它们太复杂了

是的,这就是编程的工作方式。如果你想做一些更复杂的事情,那么你需要使用更高级的组件。

JTextArea不支持样式文本,这就是它易于使用的原因。 JTextPane确实支持样式文本,因此它更“复杂”。

一旦创建了几个用于每组文本的样式,JTextPane就不那么复杂了。例如:

JText textPane = new JTextPane();
textPane.setText( "This is regular text"");
StyledDocument doc = textPane.getStyledDocument();

//  Add some styled text

SimpleAttributeSet green = new SimpleAttributeSet();
StyleConstants.setForeground(green, Color.GREEN);

try
{
    doc.insertString(doc.getLength(), "\nThis is green text.", green);
}
catch(Exception e) { System.out.println(e); }