Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин Страница 45
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин читать онлайн бесплатно
Платформа JavaFX обеспечивает функциональность встроенного Web-браузера с помощью узла WebView и объекта WebEngine.
При этом технология отображения Web-контента платформы JavaFX основана на проекте WebKit Open Source Project.
Класс WebView представляет узел отображения Web-контента, а класс WebEngine загружает веб-страницу, применяет стили и запускает JavaScript на странице.
С помощью свойства fontScale класса WebView можно регулировать размер шрифта на отображаемой Web-странице.
Свойства height, maxHeight, maxWidth, minHeight, minWidth, prefHeight, prefWidth и width определяют размеры встроенного Web-браузера WebView.
Если отображаемая Web-страница превышает размеры узла WebView, тогда в узел WebView автоматически добавляются полосы прокрутки, так что нет необходимости использования панели ScrollPane.
За загрузку отображаемой узлом WebView Web-страницы отвечает создаваемый средой выполнения объект WebEngine.
Доступ к объекту WebEngine можно получить с помощью метода getEngine класса WebView.
При этом объект WebEngine имеет набор свойств.
Свойство location возвращает URL-адрес отображаемой Web-страницы, а свойства title и document обеспечивают доступ к заголовку и документу Web-страницы.
Свойства confirmHandler, createPopupHandler, onAlert, onResized, onStatusChanged, onVisibilityChanged и promptHandler обеспечивают обработку событий Web-страницы.
За асинхронную загрузку Web-страницы на основе URL-адреса отвечает метод load класса WebEngine, а за обновление Web-страницы – метод reload.
Метод loadContent класса WebEngine позволяет отобразить Web-станицу на основе строки HTML-разметки.
Методы getLoadWorker и executeScript класса WebEngine позволяют отследить прогресс загрузки Web-страницы и выполнить JavaScript-код в контексте загруженной Web-страницы.
Объект Worker, возвращаемый методом getLoadWorker – это объект, который выполняет работу в одном или нескольких фоновых потоках, и его состояние является наблюдаемым и доступным и может использоваться из основного потока приложения.
Фоновые вычисления JavaFX мы рассмотрим позднее.
В этом примере мы создаем встроенный веб-браузер.
Мы создаем узел WebView, устанавливаем его размеры, методом getEngine получаем созданный средой выполнения объект WebEngine и загружаем первоначальный HTML контент.
Далее мы создаем текстовое поле для ввода веб адреса.
При нажатии клавиши Enter срабатывает обработчик события этого поля, и WebEngine пытается загрузить HTML контент по введенному пользователем веб адресу.
Здесь мы присоединили слушатель свойства location WebEngine, и как только открывается новая страница, ее адрес автоматически отображается в текстовом поле.
Также мы создали индикатор загрузки веб станицы.
Для WebEngine мы получаем фоновую задачу Worker и присоединяем к ней слушатель свойства progress.
Пока значение этого свойства не становится равным 1, мы видим круговой индикатор.
С помощью метода print WebEngine можно распечатать веб страницу.
Для этого нужно создать объект PrinterJob, позволяющий печатать граф сцены.
Объект PrinterJob создается с помощью статического метода createPrinterJob.
Метод printPage объекта PrinterJob позволяет распечатать любой узел Node.
Однако класс WebEngine реализует свой метод print на основе объекта PrinterJob.
Метод showPageSetupDialog объекта PrinterJob показывает диалог настройки макета страницы для печати, а метод showPrintDialog показывает диалог настройки принтера.
Задание
Используя метод setCreatePopupHandler WebEngine сделайте возможность открытия ссылки на веб странице в новом окне браузера.
Воспроизведение аудио и видео
Платформа JavaFX обеспечивает воспроизведение медиа контента с помощью набора из трех компонентов – MediaView, MediaPlayer и Media.
Узел MediaView отвечает за отображение медиа контента, компонент MediaPlayer – за его проигрывание, а компонент Media – за загрузку видео и аудио файлов.
Так как платформа JavaFX поддерживает воспроизведение видео только в формате FLV и MPEG-4, необходимо предварительно конвертировать видео файлы в этот формат для их использования в JavaFX-приложении.
Для воспроизведения аудио клипов в JavaFX-приложениях можно использовать форматы MP3, AIFF и WAV.
С помощью свойств fitHeight и fitWidth класса MediaView можно подогнать воспроизводимый видео контент под указанные размеры,
а свойства preserveRatio и smooth позволяют при этом сохранить его пропорции и обеспечить сглаживание.
Свойство viewport определяет маску исходного видео контента,
свойство onError – обработчик события ошибки MediaErrorEvent,
свойства x и y – координаты в родительском узле.
Узел MediaView создается на основе невизуального компонента MediaPlayer, отвечающего за проигрывание медиа контента,
и свойство mediaPlayer как раз связывает компонент MediaPlayer с узлом MediaView.
Класс MediaPlayer имеет большой набор свойств.
Свойство error определяет объект MediaException, представляющий ошибку воспроизведения медиаконтента,
а свойство onError – определяет обработчик Runnable ошибки воспроизведения медиаконтента.
С помощью свойств onMarker, onEndOfMedia, onReady, onPlaying, onPaused, onStopped, onHalted, onRepeat и onStalled устанавливаются обработчики Runnable состояний плеера.
Если свойство autoPlay определяется со значением true, тогда воспроизводство медиаконтента начинается сразу по готовности плеера.
Свойства rate, volume, balance, startTime, stopTime, cycleCount, mute, audioSpectrumNumBands, audioSpectrumInterval, audioSpectrumThreshold определяют скорость проигрывания, громкость, баланс, задержку начала проигрывания и задержку окончания проигрывания, количество циклов проигрывания, выключение звука, число полос в звуковом спектре, интервал между обновлениями аудиоспектра, порог воспроизведения звука.
Свойства currentRate, cycleDuration, totalDuration, currentTime, status, bufferProgressTime, currentCount возвращают текущую скорость проигрывания, продолжительность цикла проигрывания, общую продолжительность проигрывания, текущее время проигрывания, состояние плеера UNKNOWN, READY, PAUSED, PLAYING, STOPPED, STALLED и HALTED, количество данных Duration буфера плеера, а также текущий цикл проигрывания.
С помощью свойства audioSpectrumListener устанавливается объект AudioSpectrumListener, обрабатывающий обновления аудиоспектра и используемый для его визуализации при проигрывании медиаконтента.
Методы pause, play, seek и stop класса MediaPlayer обеспечивают паузу, проигрывание, перемещение и остановку медиа плеера.
Медиа плеер MediaPlayer создается на основе невизуального компонента Media, отвечающего за загрузку видео и аудио файлов.
Объект Media создается на основе URI адреса источника медиа.
Класс Media имеет свойства для чтения duration, error, height и width, а также свойство onError, определяющее обработчик Runnable события ошибки загрузки медиаконтента.
Приведенный код демонстрирует воспроизведение медиаконтента.
Здесь создаются два плеера MediaPlayer, один из которых воспроизводит видео файл, а другой – аудио файл.
Плеер MediaPlayer, воспроизводящий видео файл, добавляется в узел MediaView.
Для узла MediaView создаются элементы управления воспроизведением медиаконтента, включая кнопки проигрывания, паузы и остановки, а также слайдеры перемещения воспроизведения видео и регулировки громкости аудио.
Здесь в обработчиках действия кнопок используются методы плеера play, pause, stop, seek, setVolume.
Метод seek перемещает плеер в указанную временную метку воспроизведения.
В этом примере показано одновременное воспроизведение видео и аудио в учебных целях.
Если видео содержит звук, он будет воспроизводиться тем же плеером, что и видео.
Задание
С помощью свойства audioSpectrumListener MediaPlayer визуализируйте воспроизведение звука.
Компонент AudioClip обеспечивает проигрывание аудиоконтента и, в отличие от плеера MediaPlayer, совмещает функции загрузки аудио файла и его воспроизведения.
Компонент AudioClip хорошо подходит для воспроизведения небольших аудио сегментов, используемых, например, для звукового сопровожения анимации в JavaFX-приложениях, так как один и тот же проигрыватель AudioClip может быть запущен несколько раз параллельно с наложением звука и его использование ограничено тем, что его аудио
Жалоба
Напишите нам, и мы в срочном порядке примем меры.