| « Поставить закладку » « Сделать стартовой » | |||
|
|||
| Статьи:: Интернет технологии :: Java Q&A :: JFC: Почему именно так?
JFC: Почему именно так?Перевод на русский © Виктор
Смирнов, 2000 Java Q&A Почему нужно добавлять компоненты приложения в контейнер content окна приложения JFrame? Почему нельзя добавлять их непосредственно в окно, как в библиотеке AWT? Почему? - Потому, что так нужно. В данном случае ответ действительно вполне исчерпывающий. Тем не менее, имеет смысл обсудить, как в библиотеке Swing реализованы контейнеры верхнего уровня, такие как JFrame. Все контейнеры верхнего уровня имеют единственную компоненту - объект класса JRootPane. Класс JRootPane, в свою очередь, содержит компоненту glassPane и класс JLayeredPane. Далее, класс JLayeredPane содержит меню и контейнер contentPane. Вложенность контейнеров предоставляет логическую структуру размещения компонент. Требование добавлять компоненты в контейнер contentPane призывает придерживаться описанной структуры. Попытка поступить иначе будет противоречить принципам, заложенным разработчиками библиотека Swing. Минуточку, но зачем используется такой дизайн? Размещая компоненты приложения в одном месте (contentPane) вы значительно упрощаете себе жизнь. Такой подход позволяет, в частности, непосредственно использовать панель glassPane и располагать компоненты на разных слоях. Например, если бы вы разместили графическую компоненту над или рядом с glassPane, вы бы не смогли запретить передачу событий этой компоненте или нарисовать что-нибудь сверху так же просто, как с использованием glassPane. Кроме того, вы бы не смогли поместить слой (содержащий, например, выскакивающее меню) над всеми компонентами, так как часть из них может лежать вне контейнера layeredPane. Следую общей идеологии, вы получаете все предусмотренные преимущества (частью которых вы, быть может, ни когда и не воспользуетесь). Если же вы захотите всех перехитрить, вам придется побеспокоиться о поддержке внешнего дизайна приложения (look and feel), самостоятельно реализовать возможность размещения компонент на разных слоях (уровнях), а так же, для полноты, реализовать функциональность glassPane. На этом пути вам придется переписать значительную часть библиотеки Swing. Об автореТони Синтес работает старшим консультантом в ObjectWave, специализируясь на телекоммуникациях. Тони работает с Java начиная с 1997 года и является Sun-certified Java 1.1 программистом и Java 2 разработчиком.Ресурсы
Reprinted with permission from the March 2000 edition of JavaWorld
magazine. Рубрика: Java Q&A
Trac + Subversion @ Ubuntu: Revisited.
Задача: Установить на только что инсталлированный Ubuntu последнюю версию Trac, создать репозитории для нескольких проектов и настроить окружение соответственно. Структура проектов должна быть полностью корректной, установка максимально быстрой при минимальном количестве пакетов. Авторизация в репозитории и окружения Trac может быть общей, но позволяющей индивидуальную настройку для каждого проекта. Также, установка должна быть максимально независима от версий.
Подробнее... |
Рубрика: Ubuntu
| Добавлено: 30.08.2008
[g]Vim в режиме Python: Рекомпиляция в Windows.
Редактор Vim наиболее известен среди разработчиков в системах Unix — конкурент emacs, что-то вроде консольного IDE — этот редактор при должной сноровке и настройке (мне кажется, сноровке несколько меньшей и настройке более очевидной чем в emacs, но у последнего также есть мощная мультифункциональность — выбор за программистом) способен убыстрить и упростить многие процессы на этапах разработки не в ущерб таким удобствам как, например, авто-дополнение и навигация по проекту.
Подробнее... |
Рубрика: Статьи
| Добавлено: 30.08.2008
Java + JSON. Пути к дружбе.
Спешу поделиться результатами небольшого исследования, оказавшегося необходимым для текущего проекта. Рассматривается возможность связки Java и JSON, её преимущества и недостатки. Я расскажу о практической части, о теории больше поведают нижеприведённые ссылки (англ.).
Подробнее... |
Рубрика: Технология JAVA
| Добавлено: 30.08.2008
Остальные статьи:
Драйвер SQL Server 2005 для PHP
Типы данных в MySQL (сжатый справочник для PHP программиста)
PHP класс для работы с Яндекс.XML
Ошибки начинающих PHP разработчиков
Наследование шаблонов в Smarty
Особенности хранения сессий PHP в memcached
Internet Explorer 8 beta 2
9 правил для начинающего Ajax-разработчика
ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения
Windows 7: под покровом тайны
Apache mod_ndb - MySQL кластер с доступом через HTTP и Ajax
Поиск уязвимостей в программах с помощью анализаторов кода
Как появилась библиотека VivaCore
Это сложно
ASP.NET и немного поисковой оптимизации
Protocol buffers: библиотека обмена данными для C++, Java, Python от Google |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|