質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

1700閲覧

Java 新規予定を作成し追加するプログラム 引数に何を指定すればよいか

andersong

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2020/08/08 16:44

編集2020/08/09 04:03
  1. 利用者が予定入力ダイアログの「作成」ボタンを押す。
  2. ボタンが押されたことが予定入力ダイアログに通知される。
  3. 通知を受けた予定入力ダイアログは、自分の上に配置されている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"; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/08/08 21:17

何を実現するためのものなのか、仕様や設計を提示しないことには誰にも答えようがないです。 あと、コードはマークダウンのcode機能を利用してご提示ください
andersong

2020/08/09 01:58

返信ありがとうございます。 依頼の内容を修正させていただきました。
m.ts10806

2020/08/09 02:44

ファイルごとにわけてもらったほうが見やすいです。コード以外のものが入ってるとこちらで現象確認するときにいろいろと削らなければなりませんので。
andersong

2020/08/09 02:57

ファイルごとに分けさせていただきました。
dodox86

2020/08/09 03:10

> Schedule sc=new Schedule("yyyy/MM/dd HH:mm");/*⓶ここの引数も何を入れればいいかわかりません*/ ②は、Scheduleクラスの引数付きコンストラクタの定義を見、それに合わせて使えば良いだけのはずですが、そういう話ではないのですか。 Schedule.java の該当部 > public Schedule(String ti,String dt,String tm,boolean ad, > String pl,String dl) throws ParseException {
andersong

2020/08/09 03:45

返信ありがとうございます。 ⓶の部分をSchedule sc=new Schedule("ti","dt","tm",true,"pl","me"); としましたところエラーは出ませんでしたが予定を追加しようとすると エラー:日時が不正です。 と出ます。 どこが間違っているのでしょうか。
andersong

2020/08/09 04:00

Schedule sc=new Schedule(ti,dt,tm,true,pl,me); としたところうまくいきました。 ありがとうございます。 しかし終日のチェックボックスがうまく機能しません。 どこを修正すればよいでしょうか。
guest

回答1

0

ScheduleEntryクラスがいくつかコンパイルエラーを起こしています。

イベントを検出できない理由は単純に

java

1p2.add(cb_allday=new JCheckBox ("終日:"));

としているのに、イベントリスナー側のswitch文で

java

1public void actionPerformed(ActionEvent ev){ 2 switch(ev.getActionCommand()){ 3 case "終日": changeAllDay(); break; 4 case "作成": doCreate(); break; 5 case"キャンセル": doCancel(); break; 6 } 7}

のように 終日: と同じ文字列でないからです。

投稿2020/08/10 23:45

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問