正方形の周長 #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メソッドの方からそれを除いている。
無駄があるし、かなり適当な作りだが、これまで通りに動作する。