< 前へ | 次へ >

演習 2.5:「Delete」ボタンと確認ダイアログ・ボックスを使用可能にする

この演習では、従業員レコードを削除するように My Company Directory アプリケーションをプログラムします。

次のリストは、アプリケーションに使用させたい動作を説明しています。
  • テーブルから 1 名の従業員を選択すると、 「Delete」ボタンが使用可能になる。
  • Delete」ボタンをクリックすると、「Confirm Delete」ダイアログ・ボックスが開き、削除の確認を求められる。
  • 「Confirm Delete」ダイアログ・ボックスの「Yes」ボタンをクリックすると、 従業員レコードが削除されて、「Confirm Delete」ダイアログ・ボックスが閉じ、従業員レコードのリストが更新される。
  • No」をクリックすると、 削除がキャンセルされて、「Confirm Delete」ダイアログ・ボックスが閉じる。

テーブルの行が選択されているかいないかに基づいて、 「Delete」ボタンが使用可能または使用不可になるようにプログラムする。

「Delete」ボタンを使用可能または使用不可になるようにプログラムするには、 行が選択されたときにボタンを使用可能にするリスナーをテーブルに追加します。

  1. 「Java Bean」ビューで、「employeesTable」を選択する。 「ソース」ビューで、次の行が強調表示されます。
    employeesTable = new JTable();
  2. この行の直後に、employeesTable で、新しい ListSelectionListener、 および valueChanged イベントを追加する。
    employeesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
       public void valueChanged(ListSelectionEvent e) {
         getDeleteButton().setEnabled(getEmployeesTable().getSelectedRowCount() != 0);
       }
    });
  3. これらのコード行を追加すると、ソース・エディターは、ListSelectListener と ListSelectionEvent をインポートするまで、 それらにエラーのマークを付ける。 必要なインポートを追加するには、 メインメニューで「ソース」 > 「インポート の編成」とクリックします。クラスのインポート・セクションに、以下の行が追加されます。
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
これで、テーブル内の行を選択すると、「Delete」ボタンが使用可能になります。

「Delete」をクリックしたときに、 「Confirm Delete」ダイアログ・ボックスが開くようにプログラムする。

actionPerformed イベントを「Delete」ボタンに追加して、 「Confirm Delete」ダイアログ・ボックスが開くように、イベントをプログラムします。

  1. Delete」ボタンを右クリック して、「イベント」 > 「actionPerformed」」と選択する。 次のイベント・スタブが、getDeleteButton() メソッドに追加されます。
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {
         System.out.println("actionPerformed()"); 
         // TODO Auto-generated Event stub actionPerformed()
       }
    });
  2. この生成されたスタブを、次のコードで置き換える。 このコードによって、ボタンがクリックされたときに「Confirm Delete」ダイアログ・ボックスが 表示されるように設定します。
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {
         getConfirmDialog().setVisible(true);
       }
    });

「Confirm Delete」ダイアログ・ボックスのテキスト・フィールドをバインドする。

「Confirm Delete」ダイアログのテキスト・フィールドをバインドして、 削除する従業員のファーストネームを表示します。

  1. Java Bean ビューまたはデザイン域で、「employeeToDeleteField」テキスト・フィールドを選択して、 「バインド」タブをクリックする。

    バインディングの前の「Confirm Delete」ダイアログ・ボックス

  2. 「フィールド・データのバインディング」ダイアログ・ボックスで、 selectedEmployeeRecord データ・オブジェクトと「firstName」フィールドを選択して、 「OK」をクリックする。

    これで、employeesTable の選択された行にある firstName 列にテキスト・フィールドがバインドされます。

    バインディング後の「Confirm Delete」ダイアログ・ボックス

  3. このフィールドが読み取り専用となることを保証するために、 このフィールドのバインダーの「autoEditable」プロパティー を「false」に設定する。

削除を実行するように「Yes」ボタンをバインドする。

Web サービス上で removeEmployee(java.lang.Integer) メソッドを呼び出すように、 「Yes」ボタンをバインドします。

  1. Yes」ボタンを選択し、 「バインド」タブをクリックして、「コンポーネント・アクションのバインディング」ダイアログを開く。
  2. ソース・タイプ」フィールドで、「Web サービス」を選択する。
  3. データ・ソース」フィールドで、「webServiceDataSource」を選択する。
  4. ソース・サービス」リストから、「removeEmployee(java.lang.Integer)」を選択する。
  5. 名前」フィールドが自動的に removeEmployeeAction に変わる。 このデフォルトを受け入れます。
  6. 引数」フィールドで、「selectedEmployeeRecord」を選択する。
  7. プロパティー」フィールドで、「employeeID」を選択する。 removeEmployee() メソッドはその引数として整数を取るため、selectedEmployeeRecord の従業員 ID を使用します。
  8. ボタンの「初期状態」を「有効」に設定する。
  9. 有効化の規則」で、 それぞれの条件について「 無視」を選択する。

    このコンポーネント状態は、その状態を変更する必要がないため、 「Yes」ボタンが常時使用可能であることを意味します。

    「Yes」ボタンのための「コンポーネント・アクション・バインディング」ダイアログ・ボックス

  10. OK」をクリックする。

従業員が削除された後、「Confirm Delete」ダイアログを非表示にするイベントを追加する

このステップでは、イベントを (「Yes」ボタンそのものにではなく) 「Yes」ボタンのバインダー に追加します。 従業員が除去された後、「Confirm Delete」ダイアログ・ボックスが閉じるようにしたいということは、 バインダーが正常にサービスをデータ・ソースに呼び出した後で、それを行いたいということを意味します。

次のコードを、getRemoveEmployeeAction() メソッドに追加する。
removeEmployeeAction.addActionBinderListener(new jve.generated.IActionBinder.ActionBinderListener() {
   public void afterActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {
     getConfirmDialog().setVisible(false);
   }
   public void beforeActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {}
});

このイベント・コードにより、バインダーのアクションが実行されると「Confirm Delete」ダイアログ・ボックスが非表示になります。

演習のチェックポイント

これで、My Company Directory アプリケーションを実行したときに、 テーブル内で従業員を選択して、「Delete」ボタンをクリックし、 「Yes」をクリックして、削除を確認できるようになりました。従業員レコードは、この登録簿から除去され、従業員のリストは除去を反映したものになります。

< 前へ | 次へ >