Possible duplicate:
documentFilter.insert is never called
The override insertString(...) method is never called. Am I missing something? Piece of code:
package jaba; import javax.swing.*; import javax.swing.text.*; import java.awt.*; public class Main extends JFrame { public Main() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(640, 480); setLayout(new FlowLayout()); add(txt); Document doc = txt.getDocument(); if (doc instanceof AbstractDocument) { ((AbstractDocument)doc).setDocumentFilter(new DocumentFilter() { @Override public void insertString(DocumentFilter.FilterBypass fb, int offset, String string, AttributeSet att) throws BadLocationException { if (string.toLowerCase().contains("ass")) { super.insertString(fb, offset, "###", att); } else { super.insertString(fb, offset, string, att); } } }); } else { txt.setText("error setting filter"); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new Main().setVisible(true); } }); } private JTextArea txt = new JTextArea(40, 40); }
source share