使用 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
。
我正在 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
。