< 上一课 | 下一课 >

课程 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. 将该按钮的初始状态设置为 Enabled
  9. 对于启用规则,对每个条件选择忽略

    此组件状态意味着将总是启用“是”按钮,原因是不需要更改它的状态。

    “是”按钮的“组件操作绑定”对话框

  10. 单击确定

添加事件以在删除职员之后隐藏“确认删除”对话框

在此步骤中,将事件添加至按钮的绑定程序(而不是按钮本身)。您想要在除去职员之后关闭“确认删除”对话框,这意味着绑定程序已成功地对数据源调用服务。

将事件添加至按钮的绑定程序,以在绑定程序完成它的操作之后隐藏“确认删除”对话框:
  1. 选择按钮。
  2. 右键单击按钮的绑定程序图标,并选择事件 > 添加事件
    要点: 将事件添加至该按钮的绑定程序而不是该按钮本身。
  3. 展开 actionBinder 节点并选择 afterActionPerformed

    “是”按钮绑定程序的“添加事件”对话框

  4. 单击完成。以下事件存根会添加至 getRemoveEmployeeAction() 方法:
    removeEmployeeAction.addActionBinderListener(new jve.generated.IActionBinder.ActionBinderListener() { 
       public void afterActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {
    System.out.println("afterActionPerformed()"); // TODO Auto-generated Event stub afterActionPerformed()
    }
       public void beforeActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {}
    });
  5. 将此生成的存根替换为下面的代码:
    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) {}
    });

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

课程检查点

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

< 上一课 | 下一课 >