JTextArea文档侦听器更新文本

时间:2012-06-05 19:17:43

标签: java swing jtextarea insert-update documentlistener

我有一个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);
            }
         });

    }

2 个答案:

答案 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

答案 1 :(得分:0)

如果您想在正则表达式中删除白色字符,请使用\S or \s。如果你喜欢只去除空间,你可以用同样的方式去做。阅读有关正则表达式的更多信息:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html