正方形の周長 #24
とりあえずかなり中途半端にSquareParametersPaneに適用してみる。
...snip public class SquareParametersPane extends JPanel implements ActionListener, FocusListener, SquareListener { private Square params = new Square(); private JTextField side = new JTextField(String.valueOf(params.getSide()), 10); private JTextField peri = new JTextField(String.valueOf(params.getPerimeter()), 10); public SquareParametersPane() { ...snip peri.addFocusListener(this); params.addSquareListener(this); } ...snip private void perform(Object source) { if (source == side) { try { params.setSide(Double.parseDouble(side.getText())); } catch (IllegalArgumentException ex) { side.setText(String.valueOf(params.getSide())); } } else if (source == peri) { try { params.setPerimeter(Double.parseDouble(peri.getText())); } catch (IllegalArgumentException ex) { peri.setText(String.valueOf(params.getPerimeter())); } } } public void squareChanged(SquareEvent e) { Square s = (Square)e.getSource(); side.setText(String.valueOf(s.getSide())); peri.setText(String.valueOf(s.getPerimeter())); } }
正常にパラメータが変更されたときはsquareChangedメソッドで表示の更新を行うので、
performメソッドの方からそれを除いている。
無駄があるし、かなり適当な作りだが、これまで通りに動作する。