2013-08-02 38 views
0

我正在使用Java swing生成文本編輯器,使用JTextPane,但我發現StyledEditorKit class尚未設置背景顏色的方法。如何在JTextPane中設置背景顏色並獲取HTML代碼?

然後我用這個主意,設置背景色:

SimpleAttributeSet aSet = new SimpleAttributeSet(); 
StyleConstants.setBackground(aSet, color); 
StyledDocument doc = textPane.getStyledDocument(); 
doc.setCharacterAttributes(textPane.getSelectionStart(),textPane.getSelectionEnd()-textPane.getSelectionStart(), aSet, false); 

它可以JTextPane顯示背景顏色, 但不textPane.GetText() 獲取的HTML代碼。

後來我還發現了一個想法:

class bgAction extends StyledEditorKit.StyledTextAction { 

    public bgAction(String arg0) { 
     super(arg0); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     JEditorPane editor = getEditor(arg0); 
     try { 

      String selectedText = editor.getSelectedText(); 

      HTMLDocument document = (HTMLDocument) this.getStyledDocument(editor); 

      System.out.println(document == TextView.this.document); 
      document.remove(editor.getSelectionStart(),selectedText.length()); 

      HTMLEditorKit et = (HTMLEditorKit) this.getStyledEditorKit(editor); 

      et.insertHTML(document, editor.getSelectionStart(), ""+ selectedText + "", 0, 0, HTML.Tag.SPAN); 

     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

} 

insertHTML()方法不起作用。 這是我出錯的地方嗎?

有沒有辦法在JTextPane中設置背景顏色並獲取HTML代碼?

回答

-1

使用此代碼段

     JTextPane p=new JTextPane(); 
     p.setContentType("text/html"); 
     p.setStyledDocument(new HTMLDocument()); 

     frame.getContentPane().add(p); 
     p.setText("<html><p>This is some text in a paragraph.</p></html>"); 
     System.out.println(p.getText()); 
+0

這個代碼是我的第一個代碼片斷一樣,可以顯示JTextPane的背景顏色,但不能由textPane.getText()獲取的HTML代碼。 – oliver

+0

使用textPane.getDocument()。getText()類的方法。 –

+0

textPane.getDocument()。getText()只能獲取文本,但我想獲取HTML代碼,並且textPane.getText()可以。 – oliver