< 上一课 | 下一课 >

课程 2.5:启用“删除”按钮和确认对话框

在本课中,将对“我的公司目录”应用程序进行编程以删除职员记录。

以下列表描述了想要应用程序使用的行为:
  • 当选择表中的职员时,将启用删除按钮。
  • 当单击删除按钮时,“确认删除”对话框将打开并要求您确认删除。
  • 如果在“确认删除”对话框中单击按钮,则将删除职员记录,然后关闭“确认删除”对话框并刷新职员列表。
  • 当单击时,将取消删除并关闭“确认删除”对话框。

根据是否在表中选择了行,对“删除”按钮进行编程以将其启用或禁用

要对删除按钮进行编程以将其启用或禁用,请将侦听器添加至表,该侦听器在选择了行时会启用该按钮。

  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。以下事件存根会添加至 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. 将此生成的存根替换为以下代码,这样将设置为当单击该按钮时出现“确认删除”对话框:
    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 Service 调用 removeEmployee(java.lang.Integer) 方法。

  1. 选择按钮,然后单击绑定选项卡以打开“组件操作绑定”对话框。
  2. 源类型字段中,选择 Web Service
  3. 数据源字段中,选择 webServiceDataSource
  4. 源服务列表中,选择 removeEmployee(java.lang.Integer)
  5. 名称字段会自动更改为 removeEmployeeAction。接受此缺省值。
  6. 自变量字段中,选择 selectedEmployeeRecord
  7. 属性字段中,选择 employeeID。因为 removeEmployee() 方法将整数作为它的自变量,所以使用 selectedEmployeeRecord 的职员标识。
  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) {}
});

此事件代码会在执行绑定程序的操作之后隐藏“确认删除”对话框。

课程要点

现在,当您运行“我的公司目录”应用程序时,可以在表中选择职员,单击删除按钮,然后单击以确认删除。将从目录中除去职员记录,并且职员的列表中将反映该操作。

< 上一课 | 下一课 >