Java에서 간단한 WYSIWYG RTF 편집기를 개발 중이며 작은 문제가 있습니다. 스타일 선택 토글 버튼 (예 : 굵게, 기울임 꼴, 밑줄)을 사용자 텍스트 선택과 동기화 할 수 있어야합니다. 예를 들어, 현재 텍스트 선택이 일반 텍스트 인 경우 굵게, 기울임 꼴 및 밑줄이 표시된 토글 버튼은 선택되지 않지만 사용자가 굵게 및 밑줄이있는 텍스트를 선택하면 굵게 및 밑줄이 그어진 토글 버튼이 선택됩니다.JTextPane 스타일 선택 UI 동기화 문제
이제는 JTextPane.getInputAttributes()
이 내가 원하는 선택 속성을 가져 오지만 캐럿 업데이트 이벤트를 수신하는 데 문제가 있음을 확신합니다. 문제는 입력 속성 변경이 발생한 후 JTextPane
에 첨부 된 캐럿 수신기가 호출 된 것 같습니다. 따라서 선택은 항상 한 걸음 뒤로입니다. 즉, 토글 버튼이 업데이트되기 전에 텍스트를 두 번 선택해야합니다!
중요한 코드는 여기에 있습니다 :
textPane.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
syncAttributesWithUI(textPane.getInputAttributes());
}
});
그리고 : 사전에
private void syncAttributesWithUI(AttributeSet attributes) {
boldButton.setSelected(StyleConstants.isBold(attributes));
italicButton.setSelected(StyleConstants.isItalic(attributes));
underlineButton.setSelected(StyleConstants.isUnderline(attributes));
}
감사합니다!
질문에 대한 답변이 있습니까? 그렇지 않다면 SSCCE 게시를 고려하십시오 –