Filter all editing operations on a text component : JTextComponent « Swing JFC « Java

Filter all editing operations on a text component


import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
import javax.swing.text.JTextComponent;

public class Main {
  public static void main(String[] argv) {
    JTextComponent textComponent = new JTextField();
    AbstractDocument doc = (AbstractDocument) textComponent.getDocument();
    doc.setDocumentFilter(new FixedSizeFilter(10));

class FixedSizeFilter extends DocumentFilter {
  int maxSize;
  public FixedSizeFilter(int limit) {
    maxSize = limit;
  public void insertString(DocumentFilter.FilterBypass fb, int offset, String str, AttributeSet attr)
      throws BadLocationException {
    replace(fb, offset, 0, str, attr);

  public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String str,
      AttributeSet attrs) throws BadLocationException {
    int newLength = fb.getDocument().getLength() - length + str.length();
    if (newLength <= maxSize) {
      fb.replace(offset, length, str, attrs);
    } else {
      throw new BadLocationException("New characters exceeds max size of document", offset);


Related examples in the same category

1.Creating a Custom Editing Command for a JTextComponent
2.Overriding a Few Default Typed Key Bindings in a JTextComponent
3.Listing the Key Bindings in a JTextComponent Keymap
4.Listening for Caret Movement Events in a JTextComponent
5.Listening for Editing Changes in a JTextComponent
6.Modifying Text in a JTextComponent: Insert some text at the beginning
7.Modifying Text in a JTextComponent: Insert some text after the 5th character
8.Modifying Text in a JTextComponent: Append some text
9.Modifying Text in a JTextComponent: Delete the first 5 characters
10.Modifying Text in a JTextComponent: Replace the first 3 characters with some text
11.Using a Position in a JTextComponent
12.Limiting the Capacity of a JTextComponent
13.Enabling Text-Dragging on a JTextComponent
14.Sharing a Document Between JTextComponents
15.Enumerating All the Views in a JTextComponent
16.Moving the Caret of a JTextComponent
17.Setting the Blink Rate of a JTextComponent's Caret
18.Using the Selection of a JTextComponent
19.Get the first 3 characters
20.Get the last 3 characters
21.Remove Highlighting in a JTextComponent
22.Highlight a word in JTextComponent
23.Replace selected text
24.Set the color of text inside the selection
25.Better way to set the selection
26.Get value from JTextCompnent and convert it to upper case
27.Set the color behind the selected text