2011-05-06 3 views
2

바로 JTextArea 또는 JTextField가 HTML을 지원하지 않는다는 것을 이미 알아 냈습니다.JEditorPane, JTextPane의 JTextArea에있는 HTML

JTextArea와 같은 "화면"에 텍스트를 추가하고 나중에 텍스트를 계속 추가하려고합니다.

나는 멋지고 일 JTextArea에 함께했는데, 그것은 보인다 포맷을 지원하지 않습니다 ...

그래서 내가하는 JEditorPane의 서브 클래스 JTextPane가 사용하여 시도하지만,이 하나가이 기능을 추가입니다하지 않습니다 ...

누군가가 올바른 방향으로 나를 인도하여 JTextPane에 텍스트를 추가하거나 JTextArea를 쉽게 포맷 할 수 있습니까?

또는 다른 구성 요소를 더 나은이에 대한이 있으면 말씀 해주십시오 :

업데이트 방법은 여러 개체에 대해이 작업을 수행하는 주체에 의해 호출됩니다. 이것은 단지 포맷 된 문자열들을 묶어주고 멋진 프레임에 넣어서 사용자를 보여줍니다.

@Override 
public void update(String channel, String sender, String message) { 

    if(channel.equals(this.subject) || sender.equals(subject)){ 
     StringBuffer b = new StringBuffer(); 
     b.append("<html>"); 
     b.append("<b>"); 
     b.append("</b>"); 
     b.append("["); 
     b.append(sender); 
     b.append("] : "); 
     b.append("</b>"); 
     b.append(message); 
     b.append("</html>"); 
     b.append("\n"); 

     chatArea.append(b.toString()); 
    } 

답변

4

수있는 사람은 내가 쉽게

Document doc = textPane.getDocument(); 
doc.insertString(doc.getLength(), "some text", green); 

JTextPane가

에 텍스트를 추가 할 수 있습니다 및 사용이 훨씬 쉽게, 대신 HTML의 속성을 어떻게 올바른 방향으로 날 GUID입니다. 예를 들어 당신이 "녹색"을 정의 할 수있을 속성 : 당신은 JEditorPane의을 사용할 수 있습니다

SimpleAttributeSet green = new SimpleAttributeSet(); 
StyleConstants.setForeground(green, Color.GREEN); 
0

형식화 된 출력의 경우 JEditorPAne이 가장 좋은 옵션 일 수 있습니다.

JEditorPane의 getText() 메소드를 사용하여 현재 창에있는 텍스트를 가져온 다음 새 텍스트를 추가하고 setText()를 호출하여 모든 것을 되돌릴 수 있습니다.

b.append(chatArea.getText()); 
    b.append("All the other text") 
    chatArea.setTExt(b.toString()); 
1

. 그러나 HTML 태그가 포함 된 문자열을 추가하려는 경우 insertString() 메소드가 아닌 일부 메소드를 수행해야합니다.

예를 들어, 당신은 당신 만의 insertString을 사용하는 경우

//setup EditorPane 
JEditorPane yourEditorPane = new JEditorPane(); 
yourEditorPane.setContentType("text/html"); 

//setup HTMLEditorKit 
HTMLEditorKit htmlEditorKit = new HTMLEditorKit(); 
yourEditorPane.setEditorKit(htmlEditorKit); 

은()

String htmlText = "<div class='test'><b>Testing</b></div>"; 
Document doc = yourEditorPane.getDocument(); 
doc.insertString(doc.getLength(), htmlText, null); 

출력 될 것 가지고

< DIV 클래스 = '테스트'> < B> 테스트 </b> </div>

당신은 당신이이 방법을 사용할 수 있습니다 editorpane 스타일을 원한다면 당신의 editorpane의 출력,

테스트


마지막이 될 것입니다이 방법

htmlEditorKit.insertHTML((HTMLDocument) doc, doc.getLength(), htmlText, 0, 0, null); 

을해야

StyleSheet css = htmlEditorKit.getStyleSheet(); 
css.addRule(".test {color: green;}"); 
관련 문제