import java.awt.*; class SetDaysFrame extends Frame { private Biorhythm yourBiorhythm; private BiorhythmCanvas biorhythmCanvas; private TextField birthdayYearField, birthdayMonthField, birthdayDateField; private TextField calcYearField, calcMonthField, calcDateField; private Button OKButton, cancelButton; public SetDaysFrame(String title, BiorhythmCanvas biorhythmCanvas, Biorhythm yourBiorhythm) { super(title); this.yourBiorhythm = yourBiorhythm; this.biorhythmCanvas = biorhythmCanvas; birthdayYearField = new TextField(4); birthdayMonthField = new TextField(2); birthdayDateField = new TextField(2); calcYearField = new TextField(4); calcMonthField = new TextField(2); calcDateField = new TextField(2); OKButton = new Button("OK"); cancelButton = new Button("Cancel"); GridBagLayout gb = new GridBagLayout(); GridBagConstraints gc1 = new GridBagConstraints(); gc1.anchor = GridBagConstraints.WEST; GridBagConstraints gc2 = new GridBagConstraints(); Panel dayPanel = new Panel(); dayPanel.setLayout(gb); mb(0, 0, 5, 1, dayPanel, new Label("Birthday : "), gb, gc1); mb(0, 1, 1, 1, dayPanel, birthdayYearField, gb, gc2); mb(1, 1, 1, 1, dayPanel, new Label("/"), gb, gc2); mb(2, 1, 1, 1, dayPanel, birthdayMonthField, gb, gc2); mb(3, 1, 1, 1, dayPanel, new Label("/"), gb, gc2); mb(4, 1, 1, 1, dayPanel, birthdayDateField, gb, gc2); mb(0, 2, 5, 1, dayPanel,new Label("Calculate Day : "), gb, gc1); mb(0, 3, 1, 1, dayPanel, calcYearField, gb, gc2); mb(1, 3, 1, 1, dayPanel, new Label("/"), gb, gc2); mb(2, 3, 1, 1, dayPanel, calcMonthField, gb, gc2); mb(3, 3, 1, 1, dayPanel, new Label("/"), gb, gc2); mb(4, 3, 1, 1, dayPanel, calcDateField, gb, gc2); Panel buttonPanel = new Panel(); buttonPanel.add(OKButton); buttonPanel.add(cancelButton); setLayout(new BorderLayout()); add("Center", dayPanel); add("South", buttonPanel); setBackground(Color.white); this.pack(); } public void paint(Graphics g) { birthdayYearField.setText(Integer.toString(yourBiorhythm.getBirthdayYear())); birthdayMonthField.setText(Integer.toString(yourBiorhythm.getBirthdayMonth())); birthdayDateField.setText(Integer.toString(yourBiorhythm.getBirthdayDate())); calcYearField.setText(Integer.toString(yourBiorhythm.getCalcYear())); calcMonthField.setText(Integer.toString(yourBiorhythm.getCalcMonth())); calcDateField.setText(Integer.toString(yourBiorhythm.getCalcDate())); } public boolean handleEvent(Event event) { switch(event.id) { case Event.ACTION_EVENT: if (event.target == OKButton) { try { int birthdayYear = Integer.parseInt(birthdayYearField.getText()); int birthdayMonth = Integer.parseInt(birthdayMonthField.getText()); int birthdayDate = Integer.parseInt(birthdayDateField.getText()); int calcYear = Integer.parseInt(calcYearField.getText()); int calcMonth = Integer.parseInt(calcMonthField.getText()); int calcDate = Integer.parseInt(calcDateField.getText()); if (birthdayMonth >= 1 && birthdayMonth <= 12 && calcMonth >=1 && calcMonth <= 12) { yourBiorhythm.setBirthday(birthdayYear, birthdayMonth, birthdayDate); yourBiorhythm.setCalculateDay(calcYear, calcMonth, calcDate); } } catch (NumberFormatException ex) { } finally { biorhythmCanvas.repaint(); this.dispose(); } return true; } else if (event.target == cancelButton) { this.dispose(); return true; } break; case Event.WINDOW_DESTROY: this.dispose(); return true; default: break; } return false; } private void mb(int x, int y, int w, int h, Container p, Component c, GridBagLayout gb, GridBagConstraints gc) { gc.gridx = x; gc.gridy = y; gc.gridwidth = w; gc.gridheight = h; gb.setConstraints(c, gc); p.add(c); } }