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 ) { }
}
|