2011-01-29 4 views

답변

8

. 리스너의 콜백 메소드 (insertUpdate() 내의 removeUpdate(), 해, ChangedUpdate())에서 다음

는 단순히 뭔가 변경 및 응용 프로그램을 닫기 전에 플래그를 테스트 한 플래그를 설정

 
public class MyPanel 
    implements DocumentListener 
{ 
    private boolean changed; 

    public MyPanel() 
    { 
    JTextArea textArea = new JTextArea(); 
    textArea.getDocument().addDocumentListener(this); 
    ..... 
    } 

    ..... 

    public void insertUpdate(DocumentEvent e) 
    { 
    changed = true; 
    } 
    public void removeUpdate(DocumentEvent e) 
    { 
    changed = true; 
    } 
    public void changedUpdate(DocumentEvent e) 
    { 
    changed = true; 
    } 
} 
1

jtextarea 값을 저장하고 응용 프로그램을 닫을 때이 값을 jtextarea 값과 비교하십시오. 여기

의사 코드는 텍스트 영역의 excact 구문을 기억하지 않습니다

당신은 텍스트 영역을 백업하는 DocumentDocumentListener를 추가 할 필요가
String oldText = textarea.getText(); 
.... 

// not the exact method, just to point the moment of application exit 
public onClose() { 

    String newText = textArea.getText(); 
    // assuming oldText is not null 
    if (oldText.equals(newText)) { 
    // no changes have been done 
    } else { 
    // the value changed 
    } 

} 
+0

이 있습니까 이것에 대한 덜 지루한 솔루션? 자주 사용하기 때문에 전체 텍스트를 비교하는 것은 매우 큰 텍스트이므로 매우 무거운 작업이 될 것입니다. 단일 문자 변경을 탐지하는 미리 정의 된 기능이 있습니까? – Antrromet

+0

나는이 것을 두려워한다. 사용자가 캐릭터를 제거하고 다시 넣을 때 지능형 탐지 시스템을 작성할 수 있습니다. 이 경우 이벤트 모델은 텍스트가 변경되었음을 알려주지 만 사실이 아닙니다. –

관련 문제