Применяется специальный фильтр JTextField

Следующий класс поможет JTextField фильтровать цифровой или буквенно-цифровые символы.


import javax.swing.text.*;



public class JTextFieldFilter extends PlainDocument {

    

    public static final String LOWERCASE  =

            "abcdefghijklmnopqrstuvwxyz";

    public static final String UPPERCASE  =

            "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    public static final String ALPHA   =

            LOWERCASE + UPPERCASE;

    public static final String NUMERIC =

            "0123456789";

    public static final String FLOAT =

            NUMERIC + ".";

    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(NUMERIC||

                acceptedChars.equals(FLOAT||

                acceptedChars.equals(ALPHA_NUMERIC)){

            negativeAccepted = negativeaccepted;

            acceptedChars += "-";

        }

    }

    

    public void insertString

            (int offset, String  str, AttributeSet attr)

            throws BadLocationException {

        if (str == nullreturn;

        

        if (acceptedChars.equals(UPPERCASE))

            str = str.toUpperCase();

        else if (acceptedChars.equals(LOWERCASE))

            str = str.toLowerCase();

        

        for (int i=0; i < str.length(); i++) {

            if (acceptedChars.indexOf(str.valueOf(str.charAt(i))) == -1)

                return;

        }

        

        if (acceptedChars.equals(FLOAT||

                (acceptedChars.equals(FLOAT + "-"&& negativeAccepted)) {

            if (str.indexOf("."!= -1) {

                if (getText(0, getLength()).indexOf("."!= -1) {

                    return;

                }

            }

        }

        

        if (negativeAccepted && str.indexOf("-"!= -1) {

            if (str.indexOf("-"!= || offset != ) {

                return;

            }

        }

        

        super.insertString(offset, str, attr);

    }

}



import java.awt.*;

import javax.swing.*;  



public class tswing extends JApplet{

    JTextField tf1,tf1b,tf1c,tf2,tf3;

    JLabel l1,l1b,l1c,l2,l3;

    

    public void init() {

        getContentPane().setLayout(new FlowLayout());

        //

        l1 = new JLabel("only numerics");

        tf1 = new JTextField(10);

        getContentPane().add(l1);

        getContentPane().add(tf1);

        tf1.setDocument

                (new JTextFieldFilter(JTextFieldFilter.NUMERIC));

        

        //

        l1b = new JLabel("only float");

        tf1b = new JTextField(10);

        getContentPane().add(l1b);

        getContentPane().add(tf1b);

        tf1b.setDocument

                (new JTextFieldFilter(JTextFieldFilter.FLOAT));

        

        //

        l1c = new JLabel("only float(can be negative)");

        tf1c = new JTextField(10);

        getContentPane().add(l1c);

        getContentPane().add(tf1c);

        JTextFieldFilter jtff = new JTextFieldFilter(JTextFieldFilter.FLOAT);

        jtff.setNegativeAccepted(true);

        tf1c.setDocument(jtff);

        

        //

        l2 = new JLabel("only uppercase");

        tf2 = new JTextField(10);

        getContentPane().add(l2);

        getContentPane().add(tf2);

        tf2.setDocument

                (new JTextFieldFilter(JTextFieldFilter.UPPERCASE));

        

        //

        l3 = new JLabel("only 'abc123%$'");

        tf3 = new JTextField(10);

        getContentPane().add(l3);

        getContentPane().add(tf3);

        tf3.setDocument

                (new JTextFieldFilter("abc123%$"));

    }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>