/* Eric Jewart 11/13/97 */ package awb; import java.awt.*; public class DoubleField extends java.awt.Panel { private TextField myField; private Label myLabel; public DoubleField() { myField = new TextField(); setLayout(new BorderLayout()); add("Center", myField); } public DoubleField(int cols) { myField = new TextField(cols); setLayout(new BorderLayout()); add("Center", myField); } public DoubleField(double num, int cols) { myField = new TextField(Double.toString(num), cols); setLayout(new BorderLayout()); add("Center", myField); } public double getDouble() { try { double num = Double.valueOf(myField.getText()).doubleValue(); return num; } catch (NumberFormatException ex) { return 0; } } public void setDouble(double num) { myField.setText(Double.toString(num)); } public void addLabel(String lab) { if (myLabel == null) { myLabel = new Label(lab); remove(myField); add("West", myLabel); add("Center", myField); } else myLabel.setText(lab); } public void setLabel(String lab) { addLabel(lab); } public void setEditable(boolean b) { myField.setEditable(b); } public int getColumns() { return myField.getColumns(); } public boolean keyDown(Event e, int key) { // System.out.println("typed: " + key); // numbers are always okay if ((key > 47) && (key < 58)) return super.keyDown(e,key); // one period is ok if ((key == 46) && (myField.getText().indexOf(".") < 0)) return super.keyDown(e,key); // minus sign okay if it's the first character if ((key == 45) && ((myField.getText().equals("")) || (myField.getText().equals(myField.getSelectedText())))) return super.keyDown(e,key); // backspace and delete if ((key == 8) || (key == 127)) return super.keyDown(e,key); // arrow keys, home, end, pgup, pgdown okay if ((key > 999) && (key < 1008)) return super.keyDown(e,key); // enter key, for action events if (key == 10) return super.keyDown(e,key); // no other keys should do anything, so ignore them all return true; } }