Блокування та розблокування пунктів меню, блог тільки про java

Блокування та розблокування пунктів меню, блог тільки про java
Бувають випадки, коли деякі пункти меню повинні вибиратися лише в певних ситуаціях. Наприклад, якщо документ відкритий лише для читання, то пункт меню Save не має сенсу. Зрозуміло, цей пункт можна видалити за допомогою JMenu.remove (). але користувача може здивувати постійно змінюється меню. Краще все ж заблокувати пункти меню, тимчасово позбавивши користувача можливості виконувати ряд операції.

Щоб розблокувати або заблокувати пункт меню, використовується метод setEnabled ().

saveItem. setEnabled (false);

Існують дві стратегії блокування і розблокування пунктів меню. При кожній зміні стану програми можна викликати метод setEnabled (). застосовуючи його до відповідного пункту меню. Наприклад, відкривши документ тільки для читання, можна заблокувати Save і Save as. Однак, користуючись цією стратегією, програміст ризикує засмітити код фрагментами, призначеними для зміни стану пунктів меню. Набагато краще зовсім не турбуватися про стан пунктів меню в основній частині програми і задавати їх параметри безпосередньо перед відображенням на екрані.

Для цього потрібно зареєструвати обробник подій, пов'язаних з вибором меню. У пакеті javax.swing.event міститься інтерфейс MenuListener. в якому оголошено три методи:

  • void menuSelected (MenuEvent event)
  • void menuDeselected (MenuEvent event)
  • void menuCanceled (MenuEvent event)

Метод menuSelected () викликається перш ніж можна буде меню на екрані. Це найкращий момент для того, щоб заблокувати або розблокувати пункти меню. У наведеному нижче фрагменті коду показано, як блокуються і розблоковуються пункти пункти Save і Save As. в залежності від стану прапорця Read Only.

public void menuSelected (MenuEvent event)

saveAction. setEnabled (. readonlyItem. isSelected ());

saveAsAction. setEnabled (. readonlyItem. isSelected ());

Нижче наведено приклад програми, яка генерує набір меню. У ньому продемонстровані всі особливості меню, описані в цьому розділі: вкладені меню, заблоковані пункти, прапорці опцій і перемикачі в пунктах меню, а також клавіші швидкого доступу і клавіатурні скорочення.