2012-06-05 54 views
0

我有一個JTextArea,我想在用戶粘貼JtextArea中的文本時進行監聽。具體來說,我想要做以下事情:JTextArea文檔監聽器更新文本

獲取他們粘貼的文本,刪除空格,並用沒有空格的編輯文本(而不是用戶粘貼的原始文本)替換JTextArea文本。

我怎麼可以這樣使用的DocumentListener,避免java.lang.UnsupportedOperationException: Not supported yet.,這是作爲下面的代碼的結果做:

public void insertUpdate(DocumentEvent de) { 

     final String replace = jTextArea1.getText().replaceAll("\\s",""); 

     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
      jTextArea1.setText(replace); 
      } 
     }); 

    } 
+0

什麼是該異常的堆棧跟蹤?這似乎應該工作。除非有一些禁止重新設置事件處理程序中的文本,在這種情況下,您可以嘗試'SwingUtilities.invokeLater()'調用。 –

+0

我試過SwingUtilities.invokeLater(查看更新後的問題)。錯誤仍然被拋出。 – CodeGuy

+0

你可以發佈堆棧跟蹤嗎? (對我而言)並不清楚導致錯誤的原因。 –

回答

1

我還沒有方法insertUpdate(DocumentEvent documentEvent)任何問題,肯定可以的JTextArea只接受字符輸入,如果你有一個問題使用的JEditorPane,那裏你可以導入其他Java AWT和Swing對象太

代碼示例

private DocumentListener docListener = new DocumentListener() { 

    @Override 
    public void changedUpdate(DocumentEvent documentEvent) { 
     printIt(documentEvent); 
    } 

    @Override 
    public void insertUpdate(DocumentEvent documentEvent) { 
     printIt(documentEvent); 
    } 

    @Override 
    public void removeUpdate(DocumentEvent documentEvent) { 
     printIt(documentEvent); 
    } 

    private void printIt(DocumentEvent documentEvent) { 
     DocumentEvent.EventType type = documentEvent.getType(); 
     //your code 
    } 
}; 

更換插入字符必須添加DocumentFilter

+0

然而,如果你試圖說textArea.setText(textArea.getText()。replaceAll(「\\ s」,「」)),你會得到我放在問題 – CodeGuy

+0

中的區域,請參閱我的編輯(我將搜索onle我的例子在這裏) – mKorbel

+0

所以我只需要調用另一個函數來做到這一點,而不是把setText()放入changeUpdate函數中? – CodeGuy