- 利用者が予定入力ダイアログの「作成」ボタンを押す。
- ボタンが押されたことが予定入力ダイアログに通知される。
- 通知を受けた予定入力ダイアログは、自分の上に配置されているGUI部品から予定を
生成するために必要な情報を取り出し、新しい予定を作成する。
4. 予定入力ダイアログは、生成した予定をカレンダーシステムへ追加する。
5. カレンダーシステムは、受け取った予定をテキストエリアに追加し、予定を表示す
る。
6. 予定入力ダイアログは、自分自身を破棄する。
7. 予定入力ダイアログが閉じる。
上記のことをしたいのですが、2か所の引数に何を指定すればよいかわかりません
コード内の⓵と⓶です。
⓵はtrueかfalseだと考えたのですが⓶のせいでエラーが起こるため確認できていません
⓶は下記のコード以外にも入れたのですが
.\ScheduleEntry.java:119: エラー: クラス Scheduleのコンストラクタ Scheduleは指定された型に適用できません。
Schedule sc=new Schedule("yyyy/MM/dd HH:mm");/xxxxxx/
^
期待値: String,String,String,boolean,String,String
検出値: String
理由: 実引数リストと仮引数リストの長さが異なります
エラー1個
のようなエラーが起こります。
何を引数に指定すればよいか、回答よろしくお願いします。
追記
上記の質問は解決しました。
しかし予定を追加する際に使用するチェックボックスがうまく機能しません。
どこを修正すればよいでしょうか。
/*[CalendarSystem.java]*/ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CalendarSystem extends JFrame implements ActionListener{ private JTextArea ta; public CalendarSystem(){ super("Calendar System SP4"); setSize(600,500); setLocation(100,100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton bt=new JButton("新規予定"); bt.addActionListener(this); ta=new JTextArea(); ta.setEditable(false); JPanel p=new JPanel(); p.add(bt); add(p,BorderLayout.NORTH); add(ta); } public void actionPerformed(ActionEvent ev){ ScheduleEntry se=new ScheduleEntry(this); se.setVisible(true); } public void addSchedule(Schedule sc){ ta.append(sc+"\n"); } public static void main(String[] args){ (new CalendarSystem()).setVisible(true); } }
/*[ScheduleEntry.java]*/ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.*; import java.util.*; public class ScheduleEntry extends JDialog implements ActionListener{ private CalendarSystem cal_sys; private JSpinner sp_date,sp_time; private JCheckBox cb_allday; private JTextField tf_title; private JTextField tf_place; private JTextArea ta_memo; private JSpinner.DateEzditor de_date,de_time; public ScheduleEntry(CalendarSystem cs){ super(cs,"予定の作成",true); setSize(400,400); Dimension d=Toolkit.getDefaultToolkit().getScreenSize(); setLocation((d.width-400)/2,(d.height-400)/2); cal_sys=cs; SpinnerDateModel sdm=new SpinnerDateModel(); sp_date=new JSpinner(sdm); de_date=new JSpinner.DateEditor(sp_date,"yyyy/MM/dd"); sp_date.setEditor(de_date); sdm=new SpinnerDateModel(); sp_time=new JSpinner(sdm); de_time=new JSpinner.DateEditor(sp_time,"HH:mm"); sp_time.setEditor(de_date); Jpanel p1=new Jpanel(); p1.setLayout(new GridLayout(4,1)); JPanel p2=new JPanel(); p2.setLayout (new FlowLayout (FlowLayout. LEFT)); p2.add(new JLabel("名称:")); p2.add(tf_title=new JTextField (30)); p1.add (p2); p2=new JPanel(); p2.setLayout (new FlowLayout (FlowLayout. LEFT)); p2.add(new JLabel("日付:")); p2.add(sp_date); p1.add (p2); p2=new JPanel(); p2.setLayout(new FlowLayout (FlowLayout. LEFT)); p2.add(new JLabel("時刻:")); p2.add(sp_time); p2.add(cb_allday=new JCheckBox ("終日:")); cb_allday.addActionListener (this); pl.add (p2); p2=new JPanel(); p2.setLayout(new FlowLayout (FlowLayout. LEFT)); p2.add(new JLabel("場所:")); p2.add(tf_place=new JTextField(30)); p1.add (p2); set Layout (new BorderLayout()); add (p1, BorderLayout. NORTH); p1=new JPanel(); p1.setLayout(new BorderLayout()); p1.add(new JLabel("メモ:"),BorderLayout.WEST); p1.add(ta_memo=new JTextArea()); add(p1); p1=new Jpanel(); JButton bt=new JButton("作成"); bt.addActionListener(this); p1.add(bt); bt=new JButton("キャンセル"); bt.addActionListener(this); p1.add(bt); add(p1,BorderLayout.SOUTH); } public void actionPerformed(ActionEvent ev){ switch(ev.getActionCommand()){ case "終日": changeAllDay(); break; case "作成": doCreate(); break; case"キャンセル": doCancel(); break; } } private void changeAllDay(){ boolean ck=cb_allday.isSelected(); sp_time.setEnabled(true); /*⓵ここがtrueであっているのか*/ /*チェックボックスが選択されていなければ時刻スピナーを有効化する*/ } private void doCreate(){ String ti=tf_title.getText(); String dt=de_date.getFormat().format(sp_date.getValue()); String tm=de_time.getFormat().format(sp_time.getValue()); boolean ad=cb_allday.isSelected(); String pl=tf_place.getText(); String me=ta_memo.getText(); try{ /*予定を作成する*/ Schedule sc=new Schedule(ti,dt,tm,true,pl,me);/*⓶ここの引数も何を入れればいいかわかりません*/ cal_sys.addSchedule(sc); dispose(); } catch(ParseException e){ System.err.println("エラー:日時が不正です。"); } } private void doCancel(){ dispose(); } }
/*[Schedule.java]*/ import java.text.*; import java.util.*; public class Schedule{ private String title; private Date date; private boolean allday; private String place; private String memo; public Schedule(String ti,String dt,String tm,boolean ad, String pl,String dl) throws ParseException { title=ti; SimpleDateFormat sdf; sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm"); date=sdf.parse(dt+" "+tm); allday=ad; place=pl; memo=dl; } public String toString(){ return "名称:"+title+"\n"+ "日時: "+date+"\n"+ "終日: "+(allday?"○":"×")+"\n"+ "場所: "+place+"\n"+ "メモ: "+memo+"\n"; } }