@Override public void itemStateChanged(ItemEvent e) { // TODO Auto-generated method stub if (e.getSource() == choiceFacility) { // 施設が変更されたら,施設に応じた範囲を設定 resetTimeRange(); } else if (e.getSource() == startHour) { // 開始時刻が変更されたら,終了時刻入力欄の時を開始時刻に合わせる int start = Integer.parseInt(startHour.getSelectedItem()); endHour.resetRange(start, Integer.parseInt(endHour.getLast())); } else if (e.getSource() == endHour) { // 終了時刻が変更され,最後の時刻の場合,分は 00分に設定 if (endHour.getSelectedIndex() == endHour.getItemCount() - 1) { endMinute.select(0); } } if (e.getSource() == endMinute) { // 終了時刻(分)が変更され,時が最後の場合,分は 00分に設定 if (endHour.getSelectedIndex() == endHour.getItemCount() - 1) { endMinute.select(0); } } }
public ReservationDialog2(Frame owner) { // 基底クラス(Dialog)のコンストラクタを呼び出す super(owner, "予約取消", true); // キャンセルは初期値ではtrueとしておく canceled = true; // 施設選択ボックスの生成 choiceFacility = new ChoiceFacility(); // テキストフィールドの生成 年月日 tfYear = new TextField("", 4); tfMonth = new TextField("", 2); tfDay = new TextField("", 2); // 開始時刻 時分選択ボックスの生成 startHour = new ChoiceHour(); startMinute = new ChoiceMinute(); // 終了時刻 自分選択ボックスの生成 endHour = new ChoiceHour(); endMinute = new ChoiceMinute(); // ボタンの生成 buttonOK = new Button("予約取消"); buttonCancel = new Button("キャンセル"); // パネルの生成 panelNorth = new Panel(); panelMid = new Panel(); panelSouth = new Panel(); // 上部パネルに施設選択ボックス,年月日入力欄を追加 panelNorth.add(new Label("施設 ")); panelNorth.add(choiceFacility); panelNorth.add(new Label("予約日 ")); panelNorth.add(tfYear); panelNorth.add(new Label("年")); panelNorth.add(tfMonth); panelNorth.add(new Label("月")); panelNorth.add(tfDay); panelNorth.add(new Label("日 ")); // 中央パネルに予約 開始時刻,終了時刻入力用選択ボックスを追加 panelMid.add(new Label("予約時間 ")); panelMid.add(startHour); panelMid.add(new Label("時")); panelMid.add(startMinute); panelMid.add(new Label("分 〜 ")); panelMid.add(endHour); panelMid.add(new Label("時")); panelMid.add(endMinute); panelMid.add(new Label("分")); // 下部パネルに2つのボタンを追加 panelSouth.add(buttonCancel); panelSouth.add(new Label(" ")); panelSouth.add(buttonOK); // ReservationDialogをBorderLayoutに設定し,3つのパネルを追加 setLayout(new BorderLayout()); add(panelNorth, BorderLayout.NORTH); add(panelMid, BorderLayout.CENTER); add(panelSouth, BorderLayout.SOUTH); // ウィンドウリスナを追加 addWindowListener(this); // ボタンにアクションリスナを追加 buttonOK.addActionListener(this); buttonCancel.addActionListener(this); // 施設選択ボックス,時・分選択ボックスそれぞれに項目リスナを追加 choiceFacility.addItemListener(this); startHour.addItemListener(this); startMinute.addItemListener(this); endHour.addItemListener(this); endMinute.addItemListener(this); // 選択されている施設によって,時刻の範囲を設定する. resetTimeRange(); // 大きさの設定,ウィンドウのサイズ変更不可の設定 this.setBounds(100, 100, 500, 120); setResizable(false); }