package magicbeans; import java.awt.*; import java.awt.event.ActionEvent; import java.beans.*; public class NumericField extends TextField { private double value; private PropertyChangeSupport propChanges = new PropertyChangeSupport(this); public NumericField() { enableEvents( AWTEvent.ACTION_EVENT_MASK ); } public void processActionEvent(ActionEvent e) { try { setValue( new Double( getText() ).doubleValue() ); } catch ( NumberFormatException ex ) { select(0, getText().length()); } super.processActionEvent(e); } public double getValue() { return value; } public void setValue( double newValue ) { double oldValue = value; setText( "" + newValue ); propChanges.firePropertyChange("value", new Double(oldValue), new Double(newValue)); } public void setColumns( int cols ) { super.setColumns( cols ); Container parent = getParent(); if ( parent != null ) { invalidate(); parent.validate(); } } public void addPropertyChangeListener(PropertyChangeListener listener) { propChanges.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { propChanges.removePropertyChangeListener(listener); } //public void update( Graphics g ) { } }