< 上一個課程 | 下一個課程 >

第 2.5 課:啟用「刪除」按鈕和確認對話框

在這個練習中,您將設計 My Company Directory 應用程式來刪除員工記錄。

下列清單說明您要應用程式使用的行為:
  • 當您在表格中選取某個員工時,會啟用刪除按鈕。
  • 當您按一下刪除按鈕時,會開啟「確認刪除」對話框,要求您確認刪除。
  • 如果您在「確認刪除」對話框中按一下按鈕,則會刪除員工記錄、關閉「確認刪除」對話框,以及重新整理員工清單。
  • 如果按一下,將取消刪除並關閉「確認刪除」對話框。

設計成根據表格中是否選取一列來決定啟用或停用「刪除」按鈕

若要將「刪除」按鈕設計成啟用或停用,請在表格中新增接聽器,當選取一列時啟用按鈕。

  1. 在 Java Bean 視圖中,選取 employeesTable。程式碼視圖會強調顯示下面這一行:
    employeesTable = new JTable();
  2. 緊接在這一行後面,將新的 ListSelectionListener 和 valueChanged 事件新增至 employeesTable:
    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;
現在,當選取表格中的某列時,會啟用刪除按鈕。

設計成按一下「刪除」時開啟「確認刪除」對話框

將 actionPerformed 事件新增至「刪除」按鈕,並設計事件來開啟「確認刪除」對話框。

  1. 用滑鼠右鍵按一下刪除按鈕,選取事件 > actionPerformed。 下列事件 Stub 會新增至 getDeleteButton() 方法:
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       	public void actionPerformed(java.awt.event.ActionEvent e) {
         System.out.println("actionPerformed()"); 
         // TODO 自動產生的事件 Stub actionPerformed()
       }
    });
  2. 將這個產生的 Stub 取代為下列程式碼,設為按一下按鈕時顯示「確認刪除」對話框:
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       	public void actionPerformed(java.awt.event.ActionEvent e) {
         getConfirmDialog().setVisible(true);
       }
    });

連結「確認刪除」對話框中的文字欄位

連結「確認刪除」對話框中的文字欄位來顯示要刪除的員工的名字。

  1. 在 Java Bean 視圖或設計區域中,選取 employeeToDeleteField 文字欄位,再按一下連結標籤。

    連結之前的「確認刪除」對話框

  2. 在「欄位資料連結」對話框中,選取 selectedEmployeeRecord 資料物件和 firstName 欄位,再按一下確定

    文字欄位現在連結至 employeesTable 中選取列的 firstName 直欄。

    連結之後的「確認刪除」對話框

  3. 如果要確定這個欄位是唯讀,請將欄位連結程式的 autoEditable 內容設為 false

連結「是」按鈕來執行刪除

連結按鈕,在 Web 服務上呼叫 removeEmployee(java.lang.Integer) 方法。

  1. 選取按鈕,再按一下連結標籤,開啟「元件動作連結」對話框。
  2. 來源類型欄位中,選取 Web 服務
  3. 資料來源欄位中,選取 webServiceDataSource
  4. 來源服務清單中,選取 removeEmployee(java.lang.Integer)
  5. 名稱欄位會自動改成 removeEmployeeAction。 請接受這個預設值。
  6. 引數欄位中,選取 selectedEmployeeRecord
  7. 內容欄位中,選取 employeeID。 由於 removeEmployee() 方法以整數為引數,因此,您使用 selectedEmployeeRecord 的員工 ID。
  8. 將按鈕的起始狀態設為已啟用
  9. 啟用規則中,每一個條件都選取忽略

    這個元件狀態表示一律啟用「是」按鈕,因為不需要變更狀態。

    「是」按鈕的「元件動作連結」對話框

  10. 按一下確定

新增事件在刪除員工之後隱藏「確認刪除」對話框

在這個步驟中,您新增事件至按鈕的連結程式(不是按鈕本身)。 您想要在移除員工之後,也就是在連結程式順利呼叫資料來源的服務之後,關閉「確認刪除」對話框。

將下列程式碼新增至 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) {} 
});

這個事件程式碼會在執行連結程式的動作之後,隱藏「確認刪除」對話框。

課程回顧

現在,當您執行 My Company Directory 應用程式時,您可以在表格中選取員工,按一下刪除按鈕,再按一下來確認刪除。 這時會從目錄中移除這個員工記錄,員工清單會反映移除的結果。

< 上一個課程 | 下一個課程 >