2014-11-09 2 views
1

가 아닌 HTMLEditorKit가 설치된 JEditorPane.getText()를 사용할 때 불일치를 해결하려고합니다.HTMLEditorKit를 사용하는 JEditorPane가 <br> 태그 대신

JEditorPane.setText를 사용하여 < br> 태그가 포함 된 HTML 문자열을 전달할 수 있으며 getText()를 사용하면 해당 줄 바꿈이 < br>와 올바르게 표시됩니다. 그러나 사용자가 JEditorPane에 개행을 입력하면 getText()는 < br> 태그 대신 "/ n"문자를 반환합니다. 내 사용자 정의 HTML 파서는 사용자 "/ n"문자와 "/ n"문자를 뚜렷하게 구분할 수 없으며 HTML 문자열을보기 좋게 만듭니다. 예 : 사용자가 텍스트를 입력하면

는 JEditorPane.getText() 절차는 다음과 같이 뭔가를 반환합니다

<html> 
    <head> 

    </head> 
    <body> 
    I've written some text! Indeed so much text that this line is probably 
    going to word wrap when I run the getText procedure! 

And now I just hit enter a few times! I wonder what will happen if it wraps 
    another time? WHAM. 
And I'll hit enter once more for good measure. 
    </body> 
</html> 

내가로 표시하려면이 옵션을 기대할 수있는 반면 :

<html> 
    <head> 

    </head> 
    <body> 
    I've written some text! Indeed so much text that this line is probably 
    going to word wrap when I run the getText procedure!<br><br>And now I 
    just hit enter a few times! I wonder what will happen if it wraps 
    another time? WHAM.<br>And I'll hit enter once more for good measure. 
    </body> 
</html> 

< br> 사용자가 Enter 키를 눌렀을 때 getText 문자열에 삽입 할 수있는 방법이 있습니까? 내 첫 번째 시도는 documentFilter를 사용하는 것이지만 문서에서는 필자가 필터 내에서 insertString 또는 filterBypass를 사용하는 것으로되어 있으므로 setText ("< br>") 경로를 사용할 수 없습니다. 읽은 톤 후, 나는 HTMLEditorKit을 확장하고 읽기 절차를 무시하는 또 다른 옵션이 될 것이라고 생각하고 있습니까? JTextComponents는 내게 새 것이므로 내 머리 위로 그 방법이 있습니다. 다른 옵션이 있습니까? 아니면 자원?

감사합니다.

+0

문제를 설명하기 위해 SSCCE를 게시 하시겠습니까? – StanislavL

답변

0

here이있어 미소를 참조하십시오.

내 초기화는 다음과 같이 보았다 :

HTMLEditorKit kit = new HTMLEditorKit(); 
HTMLDocument doc = new HTMLDocument(); 
editor_pane.setEditorKit(kit); 
editor_pane.setDocument(doc); 

그러나 문서가 모든 사용자 입력을 처리하기 위해이 충분하지 않은 것 같다. 불행하게도 StyledEditorKit.BoldAction 또는 StyledEditorKit.ItalicAction을 올바르게 처리하면 문제가 초기화에 있다고 생각하지 않습니다.

HTMLEditorKit kit = new HTMLEditorKit(); 
editor_pane.setEditorKit(kit); 
editor_pane.setContentType("text/html"); 

@StanislavL 공유 문서에서 권장하는대로 위와 같이 초기화가 변경되었습니다. 이 수정에 의해, JEditorPane는 유저가 Enter 키를 눌렀을 때에 새로운 단락을 작성해, 목적에 충분히 잘 맞습니다. 도와 주셔서 감사합니다!

1

DocumentListener를 사용하고 \ n 삽입을 추적 할 수 있습니다. 삽입시 삽입 된 더미 요소를 생성하고 외부 HTML (HTMLDocument의 setOuterElement() 메소드 사용)을 대체합니다.

가에서는 autoReplace의 예