package gui.interfaces;
import javax.swing.*;
import javax.swing.text.AttributeSet;
import javax.swing.text.Document;
import java.awt.*;
/**
* Taken from: http://www.java2s.com/Tutorials/Java/Swing/JTextField/Set_max_length_for_JTextField_in_Java.htm
*/
public class BoundedTextField extends JTextField implements BoundedPlainDocument.InsertErrorListener {
public BoundedTextField() {
this(null, 0, 0);
}
public BoundedTextField(String text, int columns, int maxLength) {
super(null, text, columns);
if (text != null && maxLength == 0) {
maxLength = text.length();
}
BoundedPlainDocument plainDoc = (BoundedPlainDocument) getDocument();
plainDoc.setMaxLength(maxLength);
plainDoc.addInsertErrorListener(this);
}
public BoundedTextField(int columns, int maxLength) {
this(null, columns, maxLength);
}
public BoundedTextField(String text, int maxLength) {
this(text, 0, maxLength);
}
public void setMaxLength(int maxLength) {
((BoundedPlainDocument) getDocument()).setMaxLength(maxLength);
}
public int getMaxLength() {
return ((BoundedPlainDocument) getDocument()).getMaxLength();
}
// Override to handle insertion error
public void insertFailed(BoundedPlainDocument doc, int offset, String str,
AttributeSet a) {
// By default, just beep
Toolkit.getDefaultToolkit().beep();
}
// Method to create default model
protected Document createDefaultModel() {
return new BoundedPlainDocument();
}
}