2014-05-25 47 views
0

我已經閱讀了JTextPane上的許多線程,這讓我開始使用JTextPane編寫一個小文本編輯器,但是在項目中間幾乎摺疊起來!請能有人向我解釋如何,我可以將一個HTML字符INT一個textpane像如何在JTextPane中插入html特殊字符

​​

我的問題是,如果我已經鍵入一些文字,然後我用settext馬託插入特殊字符上同一行文本,然後插入特殊字符,而前一個文本消失。我怎樣才能阻止這種情況發生?

+0

http://stackoverflow.com/questions/12902529/jtextpane-jtextfield-strange-behaviour-with-rare-characters –

+0

讀到這裏[JTextPane的設置內容類型HTML和使用字符串助洗劑](HTTP://計算器。 COM /問題/ 9071389 /設置-的JTextPane到內容類型的HTML和使用字符串建設者) – Braj

回答

2

你還沒有說當你想打電話setText。如果你想這樣做響應按鈕點擊,那麼你只需要:

  1. 閱讀從文本(用於捕獲變量)窗格
  2. 附加所需漢字
  3. (可選)使用grabFocus將焦點和輸入插入符號放回到文本窗格中。

的代碼應該是這樣的:

JButton btnAdd = new JButton("add"); 
jPanel1.add(btnAdd); 
btnAdd.addActionListener(new ActionListener(){ 
    @Override public void actionPerformed(ActionEvent arg0) { 
     String text = pane.getText(); 
     pane.setText(text + "¢"); 
     pane.grabFocus(); 
    }    
}); 

如果您正在使用HTMLDocument的工作(你還沒有發佈完整的代碼,因此目前尚不清楚你在做什麼,產生HTML)你可以這樣做:

pane = new JTextPane(); 
jPanel1.add(pane); 
final HTMLEditorKit kit = new HTMLEditorKit(); 
final HTMLDocument doc = new HTMLDocument(); 
pane.setEditorKit(kit); 
pane.setDocument(doc); 
...  
btnAdd.addActionListener(new ActionListener(){ 
    @Override public void actionPerformed(ActionEvent arg0) { 
     int start = pane.getSelectionStart(); 
     try { 
      // add a span containing the desired element inside the current paragraph or other containing element 
      kit.insertHTML(doc, start, "<span>&cent;</span>", 0, 0, HTML.Tag.SPAN); 
     } catch ... 
     pane.grabFocus(); 
    }    
});