S73*_*17H 5 java user-interface swing jtextpane
我正在用Java开发一个简单的WYSIWYG RTF编辑器并且有一个小问题.我需要能够将样式选择切换按钮(例如粗体,斜体,下划线)与用户文本选择同步.例如,如果当前的文本选择是平原,没有被选择的粗体,斜体和下划线的切换按钮,但是当用户选择一些文字,是粗体和下划线,粗体和下划线的切换按钮被选择.
现在我很确定能JTextPane.getInputAttributes()获得我想要的选择属性但是在监听插入更新事件时存在问题.问题是附加到的插入符号监听器JTextPane似乎在输入属性发生更改后被调用.所以选择总是落后一步.也就是说,我必须在切换按钮更新之前选择文本两次!
这里重要的代码是:
textPane.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
syncAttributesWithUI(textPane.getInputAttributes());
}
});
Run Code Online (Sandbox Code Playgroud)
和:
private void syncAttributesWithUI(AttributeSet attributes) {
boldButton.setSelected(StyleConstants.isBold(attributes));
italicButton.setSelected(StyleConstants.isItalic(attributes));
underlineButton.setSelected(StyleConstants.isUnderline(attributes));
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
正在CaretListener倾听您的意见textPane,但选择的现有属性在您的手中Document。您可以使用这些CaretEvent方法来查找所选部分,Document并根据在那里找到的样式调整按钮。不幸的是,选择可能不连贯,例如部分粗体和部分斜体。常见的做法是假设用户想要将一组全新的属性应用于整个选择。
| 归档时间: |
|
| 查看次数: |
808 次 |
| 最近记录: |