正方形の周長 #5
これまでと逆で、周の長さから辺の長さが得られるようにも変更する。
どちらの長さもJTextFieldで入力し、一方が変更されればもう一方をそれに合わせて変更する。
...snip public class SquarePerimeter implements Runnable, ActionListener { private JTextField side = new JTextField("0", 10); private JTextField peri = new JTextField("0", 10); ...snip f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel lside = new JLabel("length of each side"); ...snip side.addActionListener(this); peri.addActionListener(this); f.pack(); ...snip public void actionPerformed(ActionEvent e) { Object o = e.getSource(); if (o == side) { try { double s = Double.parseDouble(side.getText()); if (s < 0) throw new NumberFormatException("invalid negative value: " + s); peri.setText(String.valueOf(s * 4)); } catch (NumberFormatException ex) { side.setText(String.valueOf(Double.parseDouble(peri.getText()) / 4)); } } else if (o == peri) { try { double p = Double.parseDouble(peri.getText()); if (p < 0) throw new NumberFormatException("invalid negative value: " + p); side.setText(String.valueOf(p / 4)); } catch (NumberFormatException ex) { peri.setText(String.valueOf(Double.parseDouble(side.getText()) * 4)); } } } ...snip