< Назад | Далее >

Урок 2.5: Связывание кнопки Удалить с окном подтверждения

В этом упражнении мы будем программировать удаление записи о сотруднике в приложении My Company Directory.

В следующем списке приведены функции, которые нужно будет использовать в приложении:
  • При выборе сотрудника в таблице активируется кнопка Удалить.
  • При нажатии кнопки Удалить открывается окно Подтвердить удаление, которое запрашивает подтверждение удаления.
  • При нажатии кнопки Да в окне Подтвердить удаление, запись о сотруднике будет удалена, окно закроется, а список сотрудников будет обновлен.
  • При нажатии кнопки Нет удаление будет отменено, а окно Подтвердить удаление закроется.

Программирование активности и неактивности кнопки Удалить в зависимости от того, выделена ли строка в таблице

Для того чтобы запрограммировать активацию или деактивацию кнопки Удалить, добавьте в таблицу обработчик событий, который будет активировать кнопку при выборе строки.

  1. Выберите таблицу employeesTable в панели объектов JavaBean. В панели исходного кода выделится следующая строка исходного кода:
    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;
Теперь при выборе строки в таблице кнопка Удалить будет становиться активной.

Программирование окна Подтвердить удаление при нажатии кнопки Удалить

Добавьте событие 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. В панели объектов JavaBean или в области эскиза выберите текстовое поле employeeToDeleteField и щелкните на вкладке Связать.

    Окно Подтвердить удаление перед связыванием

  2. В окне Привязки данных полей выберите объект данных selectedEmployeeRecord и поле firstName, затем нажмите кнопку OK.

    Текстовое поле будет связано со столбцом firstName выбранной строки в таблице employeesTable.

    Окно Подтвердить удаление после связывания

  3. Для того чтобы убедиться, что это поле доступно только для чтения, задайте в свойстве autoEditable для редактора связей поля значение false.

Связывание кнопки Да с выполнением удаления

Свяжите кнопку Да с вызовом метода removeEmployee(java.lang.Integer) в Web-службе.

  1. Выберите кнопку Да и щелкните на вкладке Связать. Откроется окно Привязки действий компонентов.
  2. В поле Исходный тип выберите Web-служба.
  3. В поле Источник данных выберитеwebServiceDataSource.
  4. В списке Исходная служба выберите removeEmployee(java.lang.Integer).
  5. В поле Имя автоматически отобразится removeEmployeeAction. Примите значение по умолчанию.
  6. В поле Аргумент выберитеselectedEmployeeRecord.
  7. В поле Свойство выберите employeeID. Поскольку метод removeEmployee() в качестве аргумента принимает целые числа, в него передается ИД сотрудника из selectedEmployeeRecord.
  8. Задайте Первоначальное состояние кнопки - Включено.
  9. В разделе Правила активации для каждого условия выберите Игнорировать.

    Это состояние компонента означает, что кнопка Да всегда будет активной, поскольку нет необходимости изменять ее состояние.

    Окно Привязки действий компонентов для кнопки Да

  10. Нажмите кнопку OK.

Добавление события, скрывающего окно Подтвердить удаление после удаления сотрудника

В этом шаге добавляется событие для редактора связей кнопки Да (но не для самой кнопки Да). Окно Подтвердить удаление должно закрываться после удаления сотрудника, то есть после успешного выполнения вызова от редактора связей к службе в источнике данных.

Добавьте следующий код в метод 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 можно выбрать сотрудника в таблице, нажать кнопку Удалить и выбрать Да для подтверждения. Запись о сотруднике будет удалена из каталога, что отобразится в списке сотрудников.

< Назад | Далее >