Код магнитолы

Оппозиция в России ?

Россия и Украина

Мысли в слух...

JS - телефон

Российская...власть ?

JS - часы

ТВ - страничка

Создаём сайт

Любимые сериалы


На главную





В этом случае - код несколько меняется. Графический пользовательский интерфейс (GUI) библиотеки Swing состоит из двух ключевых элементов : компонентов и контейнеров. Контейнеры, в свою очередь, так - же могут стать компонентами. Различие между этими двумя элементами кроется в их назначении : компонент является независимым визуальным элементом управления, а контейнер вмещает группу компонентов. Т.е. должен быть, как минимум, один контейнер. JApplet (015, рис.1.1) является контейнером верхнего уровня библиотеки Swing и имеет свой набор компонентов. Принцип формирования внешнего вида панели плеера (017-087, рис.1.1) остаётся тем - же, почти тем- же. В библиотеке Swing обработчик событий олжен выполняется в потоке диспетчеризации событий, а не в главном потоке приложения. Все взаимодействия с компонентами в библиотеке Swing должны производится в потоке диспетчеризации событий. В программе они есть, но вызываются в потоке, который не был создан самой программой.
Чтобы создавать код GUI в потоке диспетчеризации (во избежание противоречий между потоками обработки) нужно использовать метод invokeAndWait. Мы попробуем обойти это правило - почему, об этом чуть позже, когда мы будем знакомится с архивацией.
Несколько изменился принцип формирования панели плеера. На панели управления осталось всего три кнопки (047,056 и 065, рис.1.1) и вместо панели плейлиста появилась панель (037,040, рис.1.1) с кнопкой Выбор (034, рис.1.1). Уже по трёхзначной нумерации строчек кода (сравнить с пред-идущим) можно понять, что добавление собственных компонентом утяжеляет код и усложняет его обработку. Если воспользоватся типовыми компонентами (127,128,151 и 152, рис.1.1), которые мы закомментировали, код намного упростится - исчезнет обработка кнопок. В код добавлено несколько декоративных (не обязательных) элементов :
(028,111-118, рис.1.1) -- часы на отдельной панели и
(030,062 и 071, рис.1.1) -- подсказка с комментариями происходящих событий;
Этот вариант панели плеера мы создали опираясь на JMF. О её возможностях мы поговорим позже. Конечный результат - тут.
Делать невидимыми компоненты этой панели - мы не будем, процесс необходимо доработать. На данном этапе не очень понятно - почему компоненты встроенные в панели не прозрачны для курсора мышки MouseListener (12, рис.1).

...вернуться