Mega Code Archive

 
Categories / Java / Swing JFC
 

Extends PlainDocument to create alpha and numeric value based field field

import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; class JTextFieldFilter extends PlainDocument {   public static final String ALPHA = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";   public static final String NUMERIC = "0123456789";   public static final String ALPHA_NUMERIC = ALPHA + NUMERIC;   protected String acceptedChars = null;   protected boolean negativeAccepted = false;   public JTextFieldFilter() {     this(ALPHA_NUMERIC);   }   public JTextFieldFilter(String acceptedchars) {     acceptedChars = acceptedchars;   }   public void setNegativeAccepted(boolean negativeaccepted) {     if (acceptedChars.equals(ALPHA_NUMERIC)) {       negativeAccepted = negativeaccepted;       acceptedChars += "-";     }   }   public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {     if (str == null)       return;     for (int i = 0; i < str.length(); i++) {       if (acceptedChars.indexOf(str.valueOf(str.charAt(i))) == -1)         return;     }     if (negativeAccepted) {       if (str.indexOf(".") != -1) {         if (getText(0, getLength()).indexOf(".") != -1) {           return;         }       }     }     if (negativeAccepted && str.indexOf("-") != -1) {       if (str.indexOf("-") != 0 || offset != 0) {         return;       }     }     super.insertString(offset, str, attr);   } } public class Main extends JFrame{   public static void main(String[] argv) throws Exception {     new Main();   }   public Main() {     JTextField tf1c;     JLabel l1c;     setLayout(new FlowLayout());     l1c = new JLabel("only float(can be negative)");     tf1c = new JTextField(10);     getContentPane().add(l1c);     getContentPane().add(tf1c);     JTextFieldFilter jtff = new JTextFieldFilter(JTextFieldFilter.ALPHA_NUMERIC);     jtff.setNegativeAccepted(true);     tf1c.setDocument(jtff);          setSize(300,300);     setVisible(true);   } }