⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fnumberfield.java

📁 Java数字输入控件。只能够输入0-9的数字
💻 JAVA
字号:
package com.utstar.ems.omcs.function;



import javax.swing.*;

import javax.swing.text.*;



import java.awt.Toolkit;

import java.text.NumberFormat;

import java.text.ParseException;

import java.util.Locale;



/**

 * <p>Title: number</p>

 * <p>Description: this textField only accept numbers, you can set max number and max column too.</p>

 * <p>Copyright: Copyright (c) 2004</p>

 * <p>Company: </p>

 * @author not attributable

 * @version 1.0

 */



public class FNumberField extends JTextField

{

    private Toolkit toolkit;

    private NumberFormat integerFormatter;

    private int maxValue = Integer.MAX_VALUE;



    // default

    public FNumberField()

    {

        super();

        toolkit = Toolkit.getDefaultToolkit();

        integerFormatter = NumberFormat.getNumberInstance(Locale.US);

        integerFormatter.setParseIntegerOnly(true);

    }



    // number of bits

    public FNumberField(int columns)

    {

        super(columns);

        toolkit = Toolkit.getDefaultToolkit();

        integerFormatter = NumberFormat.getNumberInstance(Locale.US);

        integerFormatter.setParseIntegerOnly(true);

    }



    // initail value and number of bits

    public FNumberField(int value, int columns)

    {

        super(columns);

        toolkit = Toolkit.getDefaultToolkit();

        integerFormatter = NumberFormat.getNumberInstance(Locale.US);

        integerFormatter.setParseIntegerOnly(true);

        setValue(value);

    }



    public int getValue()

    {

        int retVal = 0;

        try

        {

            retVal = integerFormatter.parse(getText()).intValue();

        }

        catch (ParseException e)

        {

            toolkit.beep();

        }

        return retVal;

    }



    public void setValue(int value)

    {

        setText(integerFormatter.format(value));

    }



    protected Document createDefaultModel()

    {

        return new TNumberDocument();

    }



    public void setMaxValue(int max)

    {

        maxValue = max;

    }



    protected class TNumberDocument extends PlainDocument

    {

        public void remove(int offs, int len) throws BadLocationException

        {

            super.remove(offs, len);

            String newStr = FNumberField.this.getText();

            for (int i = 0; i < newStr.length() - 1; i++)

            {

                if (newStr.charAt(i) != '0')

                {

                    break;

                }

                super.remove(0, 1);

            }

        }



        public void insertString(int offs, String str, AttributeSet a) throws BadLocationException

        {

            char[] source = str.toCharArray();

            char[] result = new char[source.length];

            int j = 0;

            String temp = FNumberField.this.getText();

            if (str.equals(""))

            {

            }

            else

            {

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

                {

                    if (Character.isDigit(source[i]))

                    {

                        result[j++] = source[i];

                    }

                    else

                    {

                        toolkit.beep();

                    }

                }

            }



            StringBuffer buffer = new StringBuffer(FNumberField.this.getText());

            buffer.insert(offs, result, 0, j);

            int newValue = 0;

            if (!buffer.toString().equals(""))

            {

                try

                {

                    newValue = Integer.parseInt(buffer.toString());

                }

                catch (Exception ex)

                {

                    newValue = maxValue;

                }

            }



            if (newValue < maxValue)

            {

                super.insertString(offs, new String(result, 0, j), a);

            }



            String newStr = FNumberField.this.getText();

            for (int i = 0; i < newStr.length() - 1; i++)

            {

                if (newStr.charAt(i) != '0')

                {

                    break;

                }

                super.remove(0, 1);

            }

        }

    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -