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

📄 numbertextfield.java

📁 一个用java写的地震分析软件(无源码)-used to write a seismic analysis software (without source)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// TODO : enable toggle from insert to an overstrike text mode, enable an undo editor
package org.trinet.util.graphics.text;

import java.awt.*;
import java.awt.event.*;
import java.text.*;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;

import org.trinet.jdbc.datatypes.*;
import org.trinet.util.*;
import org.trinet.util.graphics.*;

// InputVerification kludges 1.2 for an InputVerifier set/get found in jdk 1.3
//public class NumberTextField extends JTextField implements InputVerification {
public class NumberTextField extends JTextField {
    public static final int LONG_TYPE = 0 ;
    public static final int INT_TYPE = 1 ;
    public static final int FLOAT_TYPE = 2 ;
    public static final int DOUBLE_TYPE = 4 ;
    public static final int OBJECT_TYPE = 8 ;
    protected int dataType;

    protected DecimalFormat numberFormat;
    protected String actionCommand = "";
    protected boolean audioOn = true;
    protected boolean informInvalidityOnFocusLost = false;
    protected boolean transferFocusOnAction = false;

/*
    protected static final int DEFAULT_COLUMNS = 12;
    protected static final DecimalFormat DEFAULT_FORMAT = (DecimalFormat) NumberFormat.getNumberInstance();
    static {
        DEFAULT_FORMAT.setGroupingUsed(false);
        DEFAULT_FORMAT.setDecimalSeparatorAlwaysShown(false);
        DEFAULT_FORMAT.applyPattern("#0.###");
        DEFAULT_FORMAT.setParseIntegerOnly(false);
    }
*/
    protected NumberTextField(Document document, int columns, DecimalFormat format) {
//      super(document, "", columns); // attempts setText("") formatted as number, which fails setText verify
        super(document, null, columns);
        if (format == null) throw new NullPointerException("NumberTextField null format parameter");
        numberFormat = format;
        initField();
    }

/*
    public NumberTextField() {
        this(new FormattedNumberDocument(DEFAULT_FORMAT, 0), DEFAULT_COLUMNS, DEFAULT_FORMAT);
    }

    public NumberTextField(int columns) {
        this(new FormattedNumberDocument(DEFAULT_FORMAT, 0), columns, DEFAULT_FORMAT);
    }
*/
    public NumberTextField(int columns, DecimalFormat format) {
        this(new FormattedNumberDocument(format, 0), columns, format);
    }

    public NumberTextField(float value, int columns, DecimalFormat format) {
        this(new FormattedNumberDocument(format, 0), columns, format);
        setValue(value);
    }

    public NumberTextField(double value, int columns, DecimalFormat format) {
        this(new FormattedNumberDocument(format, 0), columns, format);
        setValue(value);
    }

    public NumberTextField(int value, int columns, DecimalFormat format) {
        this(new FormattedNumberDocument(format, 0), columns, format);
        setValue(value);
    }

    public NumberTextField(long value, int columns, DecimalFormat format) {
        this(new FormattedNumberDocument(format, 0), columns, format);
        setValue(value);
    }

    public NumberTextField(Object value, int columns, DecimalFormat format) {
        this(new FormattedNumberDocument(format, 0), columns, format);
        setValue(value);
    }

    protected void initField() {
        addValidityListeners();
        setInputVerifier(new NumberTextFieldVerifier());
    }

/* Test key board input
    protected void processKeyEvent(KeyEvent evt) {
        System.out.println("evt.paramString: " + evt.paramString());
        System.out.println("keyCode: " + evt.getKeyCode());
        System.out.println("keyChar: " + evt.getKeyChar());
        System.out.println("keyText: " + evt.getKeyText(evt.getKeyCode()));
        if(evt.getID() == KeyEvent.KEY_PRESSED && evt.getKeyCode() == KeyEvent.VK_TAB) {
                if (textChanged || ! validityValue) {
//                    textChanged = false;
                }
                if (! validityValue) {
//                    evt.consume();
                }
        }
        super.processKeyEvent(evt);
    }
*/
/*
* Overrides base class implementation for setting field text string.
* @throws InvalidInputException input text fails validation
*/
    public void setText(String text) {
        Number value = stringToNumber(text);
        boolean valid = accepts(value);
        if (valid) {
            super.setText(text);
            notifyValueChanged(value, valid);
        }
        else {
//          notifyInputBoundsViolated(value);
            throw new InvalidInputException("NumberTextField setText(String) invalid input parameter: " + value);
        }
    }

/*
* override base class implementation
*/
    public Dimension getPreferredSize() {
        Dimension size =  super.getPreferredSize();
        Insets insets = getInsets();
        size.width += (insets.left  + insets.right);
        return size;
    }

/*
* override base class implementation
*/
    protected int getColumnWidth() {
        return getFontMetrics(getFont()).charWidth('5');
    }

    public int getDataType() {
        return dataType;
    }

    public Number stringToNumber(String text) {
        Number retVal = null;
        if (text.equals("")) return retVal;
        try {
            retVal = numberFormat.parse(text);
        } catch (ParseException ex) { // should not happen: insertString properly formats field data
            if (audioOn) Toolkit.getDefaultToolkit().beep();
            System.err.println("NumberTextField.stringToNumber(String) : " + ex.toString());
        }
        return retVal;
    }

/** Gets the number value equivalent of the input text.
* @throws InvalidInputException input text fails validation
*/
    public Number getNumberValue() {
        Number value = stringToNumber(getText());
        if (! accepts(value))
            throw new InvalidInputException("NumberTextField getNumberValue() input fails verification : " + value);
        return value;
    }

    public Object getValue() {
//        return getNumberValue();
        return stringToNumber(getText());
    }

    public double getDoubleValue() {
        double retVal = 0.0;
        Number value = getNumberValue();
        return (value == null) ? retVal : value.doubleValue();
    }

    public float getFloatValue() {
        float retVal = 0.f;
        Number value = getNumberValue();
        return (value == null) ? retVal : value.floatValue();
    }

    public int getIntValue() {
        int retVal = 0;
        Number value = getNumberValue();
        return (value == null) ? retVal : value.intValue();
    }

    public long getLongValue() {
        long retVal = 0l;
        Number value = getNumberValue();
        return (value == null) ? retVal : value.longValue();
    }

    public void setValue(int value) {
        dataType = INT_TYPE;
        setText(numberFormat.format((long)value));
    }

    public void setValue(long value) {
        dataType = LONG_TYPE;
        setText(numberFormat.format(value));
    }

    public void setValue(float value) {
        dataType = FLOAT_TYPE;
        setText(numberFormat.format((double)value));
    }

    public void setValue(double value) {
        dataType = DOUBLE_TYPE;
        setText(numberFormat.format(value));
    }

    public void setValue(Object value) {
        dataType = OBJECT_TYPE;
        if (value == null) setText("");
        else if (! (value instanceof DataObject)) setText(numberFormat.format(value));
        else {
            if (((DataObject) value).isNull()) setText("");
            else if ( (value instanceof DataDouble) || (value instanceof DataFloat)) {
                setText(numberFormat.format(((DataDouble) value).doubleValue()));
            }
            else setText(numberFormat.format(((DataObject) value).longValue()));
        }
    }

    public String getActionCommand() {
        return this.actionCommand;
    }

    public void setActionCommand(String command) {
        this.actionCommand = command;
        super.setActionCommand(command);
    }

    private boolean textChanged = true;

    private boolean validityValue = false;
    private Number numberValue;

    private boolean nullAllowed = false;
    private Number defaultValue = null;

    private RangeLimits limits;
    private ConstraintErrorActionStates limitsErrorActionStates;

    private InputVerifier inputVerifier;

    public void setConstraintErrorActionStates(boolean log, boolean audio, boolean reset, boolean popup) {
        if (limitsErrorActionStates == null) {
            limitsErrorActionStates = new ConstraintErrorActionStates(log, audio, reset, popup);
        }

⌨️ 快捷键说明

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