2009-10-04 2 views

답변

1

추가하기가 쉽습니다. 단지 DocumentListener 만 사용하십시오.

추가 및 제거를 처리하려면 DocumentFilter를 사용할 수 있습니다. 텍스트를 추가/제거 할 때 replace() 메서드가 호출됩니다.

편집 :

DocumentFilter를이 제거에 호출되지 않습니다. 따라서 중복 문서를 유지하는 것 이외에 제거에 대해 알 수있는 유일한 방법은 사용자 지정 문서를 만들고 remove (...) 메서드를 재정의하는 것입니다. 그런 다음 문서에서 제거되기 전에 문자열을 추출 할 수 있습니다.

+0

DF.replace()가 호출 –

0

오프셋 및 길이 (그리고 심지어 소스 Document)를 얻을 수 있으므로 문자를 읽을 수 있습니다. 제거 된 문자가 무엇인지 알고 싶다면 문서 내용의 사본을 보관해야합니다.

스윙 문서는 스레드로부터 안전합니다 (hehe). 그러나 다른 스레드에서 여러 변경 사항이 발생하면 (이벤트가 항상 재미있게하기 위해 EDT에서 항상 실행됩니다) 문자 데이터가 최신이 아닐 수도 있습니다. 당신이 이것에 관해 할 수있는 일이별로 없습니다. 심지어 다른 이벤트 리스너도 간접적으로 문서 내용을 변경시킬 수 있습니다.

일반적으로 이벤트가있는 쉬운 방법은 이벤트 개체를 모두 무시하는 것입니다. 당신이 알아야 할 것은 당신이 듣고있는 대상에서 변경되었을 수도있는 것입니다. 이렇게하면 강력하고 이해하기 쉬운 코드를 얻을 수 있습니다. 변경 사항을 실제로 처리해야하는 경우, camickr에 언급 된 DocumentFilter은 swingall.jar 이후 Swing에 추가 된 유용한 항목입니다 (더 좋은 기본 L & F 충실도 제외).

(참고, 많은 사람들이 DocumentListener.changedUpdate에 대한 문서를 읽어 실패 -, 그렇지 문자를 변경 속성에 적용됩니다.) 내가 정확히 기억한다면 빈 문자열

관련 문제