使用 Swing 在 Java 中用粗体书写

Writing with bold in Java using Swing

我正在 Java 中使用 Swing 编写一个文本编辑器。我用来输入文本的主要组件是 JTextPane。我知道如何将选定的文本加粗,但我也想按加粗并设置新文本的格式。这是我的代码:

static void boldSelection(JTextPane editor, JButton button){
    StyledDocument doc = (StyledDocument) editor.getDocument();
    int selectionEnd = editor.getSelectionEnd();
    int selectionStart = editor.getSelectionStart();
    if (selectionStart == selectionEnd) {
      return;
    }
    Element element = doc.getCharacterElement(selectionStart);
    AttributeSet as = element.getAttributes();

    MutableAttributeSet asNew = new SimpleAttributeSet(as.copyAttributes());
    StyleConstants.setBold(asNew, !StyleConstants.isBold(as));
    doc.setCharacterAttributes(selectionStart, editor.getSelectedText().length(), asNew, true);
}

它有效,但我不知道如何更改它,因为我必须将长度传递给 setCharacterAttributes。 要明确: 这就是我所拥有的: Bolding selected text 这就是我想要做的: Entering bolded text

JTextPane 使用的 EditorKit 支持粗体 Action 以及编辑器可能使用的其他常见操作。所以你不需要写任何特殊的代码,只需要创建一个Swing组件来使用Action.

查看有关 Text Component Features 的 Swing 教程部分的工作示例。

教程示例仅使用菜单项,但您也可以使用 Action 创建 JButton 以添加到 JToolBar