0

我有一个JTextPane显示一些文本的。它是动态生成的。程序从套接字接收文本的样式和文本本身。

例如,我希望文本的某些部分加粗,其他部分居中,有些部分既粗体又居中。我用这段代码设置了一个样式

doc.insertString(doc.getLength(), text, boldText);

有没有办法做类似的事情:

doc.insertString(doc.getLength(), text, boldText + centeredText);

我不想为我需要的每个s组合创建一个单独SimpleAttributeSet的组合,因为在真正的程序中会有更多的选项,而且它很难阅读,而且会让我发疯。Style

谢谢

4

1 回答 1

1

我不想为每个样式组合创建一个单独的 SimpleAttributeSet

为什么?这就是 HTML 的工作方式。您可以为单个标签设置属性,如 h1、h2、h3 等。

为什么你的应用会有所不同?

您将从套接字中获得不同类型的文本,因此部分文本应包含文本的“类型”,以便您可以使用适当的样式。

所以你真的应该为你可以接收的每种类型的文本设置一组属性,这样你就有一个易于控制的一对一映射。

但是,aSimpleAttributeSet有一个addAtributes(...)方法,因此没有理由不能使用两个单独的属性集的属性创建一个属性集。

就像是:

SimpleAttributeSet combined = new SimpleAttributeSet();
combined.addAttributes( boldText );
combined.addAttributes( centeredText );
doc.insertString(doc.getLength(), text, combined);
于 2021-03-17T14:39:40.730 回答