Java JTextArea文档侦听器更新文本
我有一个JTextArea,当用户在JTextArea中粘贴文本时,我想听听。具体来说,我想做以下几点: 获取他们粘贴的文本,删除空白,并将JTextArea文本替换为不带空格的编辑文本(而不是用户粘贴的原始文本) 如何使用DocumentListener做到这一点,并避免Java JTextArea文档侦听器更新文本,java,swing,jtextarea,insert-update,documentlistener,Java,Swing,Jtextarea,Insert Update,Documentlistener,我有一个JTextArea,当用户在JTextArea中粘贴文本时,我想听听。具体来说,我想做以下几点: 获取他们粘贴的文本,删除空白,并将JTextArea文本替换为不带空格的编辑文本(而不是用户粘贴的原始文本) 如何使用DocumentListener做到这一点,并避免java.lang.UnsupportedOperationException:不受支持。,这是以下代码的结果: public void insertUpdate(DocumentEvent de) { fi
java.lang.UnsupportedOperationException:不受支持。
,这是以下代码的结果:
public void insertUpdate(DocumentEvent de) {
final String replace = jTextArea1.getText().replaceAll("\\s","");
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jTextArea1.setText(replace);
}
});
}
我对insertUpdate(DocumentEvent DocumentEvent)方法没有任何问题,确保JTextArea只能接受chars输入,如果您在使用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
}
};
要替换插入的字符,必须添加,如果要删除白色字符,请在regexp中使用
\S或\S
。如果您只想删除空间,可以用同样的方法。阅读有关regexp的更多信息:该异常的堆栈跟踪是什么?这似乎应该奏效。除非禁止在事件处理程序中重新设置文本,否则您可以尝试调用SwingUtilities.invokeLater()
call。我尝试了SwingUtilities.invokeLater(请参阅更新的问题)。仍然引发错误。是否可以发布堆栈跟踪?(对我来说)不清楚是什么导致了错误。但是,如果您尝试说textArea.setText(textArea.getText().replaceAll(“\\s”,““”)),您就得到了我在问题中输入的区域,因此我只需要调用另一个函数来执行此操作,而不是将setText()放在changeUpdate函数中,然后您就可以组合两个侦听器(当然,将DocumentListener中的insertUpdate保留为空)我已经在删除空白。请阅读问题,因为这不是问题所在。