Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab05_2010_draft3

.pdf
Скачиваний:
33
Добавлен:
07.06.2015
Размер:
2.53 Mб
Скачать

все ссылки на эти элементы, чтобы безопасно удалить Ваш класс». Разумеется, эта надпись носит «общий характер», и призвана сообщить Вам, что такое удаление невозможно без участия программиста: поле progressBar используется в коде, и Вам необходимо проконтролировать, не нарушит ли его удаление работу приложения.

Рис. 13. Поле progressBar

Рис. 14. Выбор пункта меню Safely Delete

Рис. 15. Диалоговое окно безопасного удаления

Рис. 16. Сообщение о необходимости удаления некоторых элементов вручную

Нажмите на кнопку Show Usages (Показать вхождения). Это приведет к открытию вкладки Usages (рис. 17).

Рис. 17. Список вхождений progressBar в исходный код

Как можно видеть, в коде имеется 12 обращений к полю progressBar. Выполните двойной щелчок на первом элементе из списка вхождений – это приведет к тому, что в исходном коде это вхождение будет выделено (рис. 18).

Рис. 18. Первое вхождение progressBar

Возле выделенной строки кода Вы можете наблюдать значок лампочки. Щелчок по этой лампочке (можно также воспользоваться клавиатурной комбинацией Alt + Enter) продемонстрирует Вам «предложения» NetBeans (рис. 19). Этот скриншот был сделан в версии NetBeans 6.8, и он включает в себя пункт Surround with /*selection*/ (заключить в комментарий выделенное). К сожалению, в NetBeans 6.9 этот пункт в меню отсутствует, однако это поправимо.

Рис. 19. Предложенные средой варианты действий

Конечно, если Вы совершенно уверены, что удаление той или иной строки в коде не приведет к неприятным последствиям, Вы можете просто воспользоваться клавишами delete или backspace. Однако безопаснее вначале закомментировать строки, которые Вы собираетесь удалить и удостовериться в работоспособности приложения. Второе (на рисунке) предложение среды как раз и состоит в том, чтобы закомментировать выделенное.

Сделаем небольшое отступление и покажем, как добавить нужный пункт (о заключении выделенного фрагмента в комментарий) в контекстное меню. Сначала потребуется обратиться к меню Tools | Options (рис. 19 А). В открывшемся диалоговом окне выберите пункт Editor и вкладку Code Templates (рис. 19 B). На этой вкладке приведены все уже заданные в NetBeans сокращения (abbreviation), которые при нажатии клавиши Tab разворачиваются в указанный текст. В частности, Вы можете найти там сокращение bcom, которое можно использовать вместо непосредственной печати «заготовки» многострочного комментария (можете попробовать набрать bcom в любом месте Вашего кода и нажать после этого Tab). «Язык», с помощью которого задаются сокращения, вполне понятен интуитивно, и после изучения имеющихся образцов практически всегда можно составить собственный. Рекомендуется изучить имеющиеся сокращения (вполне возможно, Вы найдете для себя немало полезного).

Чтобы задать собственный шаблон, нажмите кнопку New в окне Options. Это приведет к появлению небольшого диалогового окна (рис. 19 C), в котором можно будет ввести сокращение для нового шаблона. Предлагается назвать его bbcom. После ввода сокращения оно появится в таблице в самой последней ее строке (рис. 19 D). Теперь необходимо указать, какой текст будет соответствовать этому сокращению (в текстовом

поле Expanded Text) (рис. 19 E), и добавить описание (Description) этого текста, которое и будет появляться в контекстном меню (рис. 19 F).

Рис. 19 А. Выбор пункта меню для изменения контекстного меню

Поясним то, что Вы видите на двух последних рисунках. Обозначение ${selection} как раз и означает некоторый выделенный фрагмент в тексте программы. Именно этот выделенный фрагмент и будет преобразован в многострочный комментарий (ограниченный парами символов /* и */). В описаниях же используется фактически подмножество языка разметки html. В частности, тег <b> (</b>) используется для выделения жирным шрифтом некоторого текста. Именно описание будет добавляться в контекстное меню (после слов Surround with).

Рис. 19 B. Окно Options, список доступных шаблонов

Рис. 19 С. Окно добавления нового сокращения. В поле Abbreviation следует напечатать bbcom и нажать OK

Рис. 19 D. Вновь добавленное сокращение помещается в конец таблицы

Рис. 19 Е. В поле Expanded Text следует напечатать текст, в который должно «превращаться» сокращение

Рис. 19 F. Содержимое поля Description будет отображаться в контекстном меню

Если теперь выделить фрагмент текста и обратиться к меню через значок лампочки (или клавиатурную комбинацию Alt + Enter), то соответствующий пункт меню появится (проверьте).

Но, к сожалению, при использовании для выделения окна Usages выделенным оказывается только имя поля progressBar, но не обращение к его методу setVisible. Поэтому если сразу выполнить команду Surround with /* selection */ , то это приведет к ошибке (рис. 20).

Рис. 20. Если закомментировать только имя поля, возникнет ошибка

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

команду (рис. 21; в Вашей версии среды команды могут располагаться в ином порядке). В результате этот фрагмент кода будет закомментирован (рис. 22).

Примечание.

Конечно, можно закомментировать фрагмент кода и без помощи среды, и используя обычный комментарий до конца строки (особенно, если код, который нужно закомментировать,

действительно помещается на одной строке).

Теперь то же самое следует проделать со следующими семью вхождениями progressBar – с помощью вкладки Usages найти их в коде и заключить в комментарий (вручную или с помощью среды). Важно отметить, что если progressBar (это касается и любой другой переменной) встречается только в левых частях операторов присваивания или используется для установки значений некоторых свойств, то удаление, как правило, не приведет к разрушительным последствиям для приложения. Если же удаляемая переменная используется для установки какого-либо другого значения или встречается в правой части оператора присваивания, то код программы наверняка потребует куда более серьезной «переработки».

Рис. 21. Заключение кода в комментарий

Рис. 22. Закомментированный код

Девятое и последующие вхождения оказываются в области Generated Code, непосредственное редактирование которой пользователю не разрешено (рис. 23). Значок лампочки появится, но в контекстном меню нужных пунктов не будет.

Рис. 23. Девятое вхождение закомментировать не удастся

Чтобы удостовериться, что больше не осталось ни одного вхождения поля progressBar в область кода, редактирование которой доступно программисту, можно использовать кнопку Refresh the refactoring data (обновить данные рефакторинга) (рис. 24).

Рис. 24. Обновление данных рефакторинга

Нажатие на эту кнопку вернет Вас к окну Safely Delete (рис. 15), после чего потребуется вновь нажать кнопку Preview (и перейти к окну, показанному на рис. 16), а затем вновь перейти к списку вхождений. Как можно видеть, он стал короче (рис. 25), и последовательный просмотр всех оставшихся вхождений неизменно приводит нас в область Generated Code.

Рис. 25. Обновленный список содержит 4 элемента

Эта область, как уже было сказано, содержит код, который автоматически генерируется при помещении визуальных компонентов на форму в режиме отображения Design. Поэтому переключитесь в этот режим отображения и выберите элемент progressBar с помощью Инспектора объектов или же просто щелкнув по нему мышью

(рис. 26).

Рис. 26. Элемент progressBar выделен

Теперь с помощью контекстного меню (которое можно вызвать как щелкнув по выделенному объекту непосредственно, так и в Инспекторе объектов) удалите элемент

(рис. 27).

Рис. 27. Удаление с помощью контекстного меню

Вновь переключитесь в режим отображения исходного кода и нажмите на кнопку

Refresh the refactoring data (рис. 24). После возвращения к окну Safely delete и нажатия на кнопку Preview Вы увидите окно с сообщением, что тот элемент, который должен быть подвергнут рефакторингу, удален или существенно изменен, и получить список вхождений невозможно.

Рис. 28. Сообщение об отсутствии элемента для рефакторинга

В этом окне можно нажать кнопку Cancel (отмена) и тем самым прекратить процесс рефакторинга (для надежности можете выполнить поиск элемента progressBar в файле и убедиться, что он присутствует только в комментариях).

Этот механизм позволяет легко избавляться от компонентов, которые были помещены на форму и не использовались, но при наличии «использующих вхождений» требует от программиста внимательного рассмотрения каждого такого вхождения.

§ 4. Рисование: подготовка «холста»

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

Чтобы поместить компонент из Палитры компонентов на панель, можно либо щелкнуть сначала на компоненте в Палитре компонентов, а потом в нужном месте на панели, либо просто перетащить его с Палитры компонентов. Когда компонент расположен на панели, Вы можете его перемещать, растягивать (или сжимать) так, как сочтете нужным.

Поместите на главную панель приложения компонент Panel (его можно найти в Палитре на вкладке Swing Containers) Панель не должна занимать собой всю область приложения – справа (слева, снизу, сверху – как Вам покажется более удобным) следует оставить немного места для простых «инструментов» (рис. 29).

Рис. 29. Возможное размещение компонента Panel

По умолчанию среда дает имя этому компоненту jPanel1 (Вы можете увидеть это в Инспекторе объектов). Такое имя малоинформативно, поэтому заменим его. Вызовите контекстное меню, нажав правую клавишу мыши либо на имени объекта jPanel1 в

Соседние файлы в предмете Программирование на Java