Task追加ボタンの実装(本編) – Javaでデスクトップトップアプリ(予定&ToDo管理)を作る-023
今回はTask追加ボタンの実装本編です。
早速いきましょう。
AddModePanelにボタンの設置
AddModePanelに追加ボタンを設置します。
[AddModePanel.java]
public class AddModePanel extends JPanel implements ActionListener{
/*今までのコード*/
public AddModePanel(){
/*今までのコード*/
JButton taskAdd = new JButton("タスク追加");
taskAdd.setBounds(420, 280, 140, 30);
}
}
Listenerの設置
addActioneListenerメッソドを使ってtaskAddボタンにリスナーを設置します。今回はTaskAddListenerというクラスを新しく作ってリスナーにします。
[AddModePanel.java]
public class AddModePanel extends JPanel implements ActionListener{
/*今までのコード*/
public AddModePanel(){
/*今までのコード*/
JButton taskAdd = new JButton("タスク追加");
taskAdd.setBounds(420, 280, 140, 30);
taskAdd.addActionListener(new TaskAddListener());
panel.add(taskAdd)
}
}
TaskAddListenerの作成
TaskAddListenerクラスを作成し、atcionPerformedメソッドを実装していきます。
注意する点としては、
1.タスク名が空のときはreturnする。
2.日付指定のチェックボックスが選択されているときは、spinnerから日付の値を取得する。
3.日付指定のチェックボックスが選択されていて、時間が指定されているときはコンボボックスから時間の値を取得する。このとき、Stringからintに変換するために、Integer.parseInt()を使う。
4.取得した値をpropertiesに追加していく。
5.boxにタスクを追加する。
6.タスクを追加した後は、テキストフィールドを空にする。
実際にコードを見ていきましょう。
[TaskAddListener.java]
public class TaskAddListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// TODO 自動生成されたメソッド・スタブ
String taskName = AddModePanel.taskNameField.getText();
if((taskName == null) | (taskName.equals(""))) return;
String description = AddModePanel.descriptionField.getText();
Map properties = new HashMap();
Boolean dateCheck = AddModePanel.ckbox.isSelected();
if(dateCheck){
Calendar date = Calendar.getInstance();
date.setTime((Date)AddModePanel.spinner.getValue());
properties.put(PropertyName.STARTYEAR.toString(), date.get(Calendar.YEAR));
properties.put(PropertyName.STARTMONTH.toString(), date.get(Calendar.MONTH));
properties.put(PropertyName.STARTDATE.toString(), date.get(Calendar.DATE));
properties.put(PropertyName.STARTWEEK.toString(), date.get(Calendar.WEEK_OF_YEAR));
String hour = (String)AddModePanel.hourcombo.getSelectedItem();
String minute = (String)AddModePanel.minutecombo.getSelectedItem();
if((!hour.equals("未指定")) && (!minute.equals("未指定"))){
properties.put(PropertyName.STARTHOUR.toString(), Integer.parseInt(hour));//Stringからintに変換
properties.put(PropertyName.STARTMINUTE.toString(), Integer.parseInt(minute));//Stringからintに変換
}
}
String category = (String)AddModePanel.categorycombo.getSelectedItem();
properties.put(PropertyName.CATEGORY.toString(), category);
String context = (String)AddModePanel.contextcombo.getSelectedItem();
properties.put(PropertyName.CONTEXT.toString(), context);
properties.put(PropertyName.FINISH.toString(), false);
Main.box.addTask(taskName,description,new TaskProperty(properties));
properties.clear();
AddModePanel.taskNameField.setText("");//フィールドを空にする
AddModePanel.descriptionField.setText("");//フィールドを空にする
}
}
}
テスト用にactionPerformedメソッド内に以下のコードを追加します。
for(Iterator i1 = Main.box.getTasks().iterator(); i1.hasNext();){
Task task1 = (Task) i1.next();
System.out.println(task1.getName());
}
これで、タスクが追加される度にboxに入っているタスク名が全て表示されます。
実行してみましょう。
task1を入力して
追加ボタンを押すと、task1がボックス内に追加される
task2を入力して
追加ボタンを押すと、task1,2が表示される
以上でtask追加ボタンの実装完了です。
アプリ開発記の次の記事はこちら => ボタン操作で画面を切り替える-Java CardLayoutの使い方- Javaでデスクトップトップアプリ(予定&ToDo管理)を作る-024