【问题标题】:Error with making text bold and colored in JTextPane在 JTextPane 中使文本变为粗体和着色时出错
【发布时间】:2013-09-18 16:36:41
【问题描述】:

我正在尝试使用将文本输出为 HTML 的 JTextPane 创建一个文本编辑器。我想包括粗体、颜色和对齐文本的选项。我在更改混合粗体和非粗体的文本选择的颜色时遇到问题。例如,如果我在编辑器中有文本“bold text not bold text”并且我突出显示两个单词并尝试更改文本的颜色,它会更改颜色并使所有文本粗体,而不是让第二个单词不加粗。所以我不确定这个问题来自哪里,是否与 setCharacterAttributes 有关,或者是否将文本输出为 html 存在问题。这是我的一些使文本变粗的代码:

    MutableAttributeSet attrs = pane.getInputAttributes();
    StyleConstants.setBold(attrs, bold); 
    pane.getStyledDocument().setCharacterAttributes(p.getSelectionStart(),len,attrs,false);

下面是我更改文本颜色之前和之后 html 输出的示例。这只是body标签里面的内容

之前: 粗体不是粗体

颜色变为红色后: 粗体不是粗体

这与选择的第一个单词是否为粗体有关。如果我做了同样的例子,但第二部分是粗体而第一部分不是粗体,那么它工作正常。所以它与文本选择的开头是否为粗体有关。

【问题讨论】:

    标签: java html swing jtextpane


    【解决方案1】:

    这是我的一些使文本变粗的代码:

    不知道如何使用该代码的上下文。但我想说一个更好的方法是使用StyledEditorKit 中的默认粗体动作。

    阅读Text Component Features 上的 Swing 教程,了解编辑器的简单示例。该示例使用 JTextPane,但创建菜单项的概念是相同的。

    【讨论】:

    • 是否有可以让您“取消加粗”文本的操作?
    • @AudreySmithDeyerle,您尝试过教程中的代码吗?操作旨在切换属性。
    • 我确实尝试过实现教程中的代码。它适用于所有情况,除了一种。当我打开编辑器并输入文本并加粗和取消加粗时,它工作正常。我尝试将编辑器输出的 html 保存到文本文件(通过 getText),然后通过 setText 将其加载回编辑器,我无法取消任何粗体文本。当我尝试取消加粗文本时,编辑器会反映更改,但是当我尝试保存 html 时, 标签仍然存在,因此在重新加载时它仍然是粗体。知道为什么它可以正常工作文本从头开始,但不是在已加载的文本上?
    • 我在尝试更改文本颜色时也遇到了同样的问题,一旦重新加载,我就无法更改它。难道是编辑器在加载时没有识别文本的样式?
    • 我不玩 JEditorPane 和 HTML。我只能说如果文本被导出并使用适当的标签保存,那么它应该可以工作。我不知道为什么 HTML 中可能会留下额外的标签。确保您使用的是 JEditorPane 的 write(...) 方法。
    【解决方案2】:

    是否有可以让您“取消加粗”文本的操作?

    创建并应用合适的SimpleAttributeSet,例如normal,见here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 2013-02-03
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多