import java.awt.Panel; import java.awt.TextField; import java.awt.Checkbox; import java.awt.GridLayout; import java.awt.Color; import java.awt.event.*; /**============================================================= * Creates a TextField + CheckBox inside a Display class * Value given at creation is the default AUTO value *==============================================================*/ public class AxisValue extends Panel { TextField txtvalue; Checkbox check; double value; double valueAuto; boolean state; private NotifyParent parent; public void setAuto(double a) { valueAuto = a; if(state) setValue(valueAuto); } public void setManual(double a) { setState(false); setValue(a); } public void setState(boolean s) { check.setState(s); setCheck(s); } public double getValue() {return value;} public boolean getState() {return state;} AxisValue(NotifyParent p, double v){ // Make Layout setLayout(new GridLayout(2,1)); txtvalue = new TextField(String.valueOf(value), 10); txtvalue.setBackground(Color.lightGray); txtvalue.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String v1 = ((TextField)e.getSource()).getText(); handleText(v1); parent.update(); } }); if(state) txtvalue.setEditable(false); else txtvalue.setEditable(true); add(txtvalue); check = new Checkbox("Auto"); check.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e){ state = ((Checkbox)e.getSource()).getState(); setCheck(state); if(state) parent.update(); } }); add(check); // Update components parent = p; value = v; setValue(value); state = true; setAuto(value); setState(state); } void setValue(double v){ value = v; txtvalue.setText(String.valueOf(value)); } void setCheck(boolean s){ state = s; if(state) txtvalue.setEditable(false); else txtvalue.setEditable(true); if(state) { value = valueAuto; setValue(value); } } void handleText(String st) {double val; try { val = (new Double(st)).doubleValue(); } catch(Exception e) { txtvalue.setText("0."); val = 0.; } value = val; } }