Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

var version = String(java.lang.System.getPropertyC'java.version"));

12.1.1. Пример использования Rhino

В примере 12.1 приводится простое приложение для интерпретатора Rhino, демонстрирующее большую часть возможностей и приемов, описанных выше. Пример использует пакет javax.swing со средствами построения графических интерфейсов, пакет java.net с инструментами организации сетевых взаимодействий, пакет java.io потокового ввода/вывода и инструменты языка Java многопоточного выполнения для реализации простого приложения менеджера загрузки, которое загружает файлы по адресам URL и отображает ход выполнения загрузки. На рис. 12.1 показано, как выглядит окно приложения в процессе загрузки двух файлов.

Пример 12.1. Приложение менеджера загрузки для Rhino

/*

* Приложение менеджера загрузки с простым графическим интерфейсом,

* построенным средствами языка Java

*/

// Импортировать графические компоненты из библиотеки Swing

// и несколько других классов

importPackage(javax.swing);

importClass(javax.swing.border.EmptyBorder);

importClass(java.awt.event.ActionListener);

importClass(java.net.URL);

importClass(java.io.FileOutputStream);

importClass(java.lang.Thread);

// Создать графические элементы управления

var frame = new JFrame("Rhino URL Fetcher"); // Окно приложения

var urlfield = new JTextField(30); // Поле ввода URL

var button = new JButton("Download"); // Кнопка запуска загрузки

var fil-echooser = new JFileChooser; // Диалог выбора файла

var row = Box.createHorizontalBox; // Контейнер для поля и кнопки

var col = Box.createVerticalBox; // Для строки и индикатора хода

// выполнения операции

var padding = new EmptyBorder(3.3,3,3); // Отступы для строк

// Объединить все компоненты и отобразить графический интерфейс

row.add(urlfield); // Поместить поле ввода в строку

row.add(button); // Поместить кнопку в строку

col.add(row);// Поместить строку в колонку

frame.add(col); // Поместить колонку во фрейм

row.setBorder(padding); // Добавить отступы вокруг строки

frame.pack; // Определить минимальный размер

frame.visible = true; // Вывести окно

// Эта функция вызывается, когда в окне что-то происходит,

frame.addWindowListener(function(e, name) {

// Если пользователь закрыл окно, завершить приложение,

if (name === "windowclosing") // Rhino добавляет аргумент name

java.lang.System.exit(0);

});

// Эта функция вызывается, когда пользователь щелкает на кнопке

button.addActionListener(function {

try {

// Создать объект java.net.URL для представления URL источника.

// (Автоматически будет проверена корректность ввода пользователя)

var url = new URL(urlfield.text);

// Предложить пользователю выбрать файл для сохранения содержимого URL

var response = filechooser.showSaveDialog(fгате);

// Завершить, если пользователь щелкнул на кнопке Cancel

if (response != JFileChooser.APPROVE.OPTION) return;

// Иначе получить объект java.io.File, представляющий файл назначения

var file = filechooser.getSelectedFile;

// Запустить новый поток выполнения для загрузки url

new java.lang.Thread(function {

download(url,file); }).start;

}

catch(e) {

// Вывести диалог, если что-то пошло не так

Поделиться:
Популярные книги

Газлайтер. Том 39

Володин Григорий Григорьевич
39. История Телепата
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 39

Запечатанный во тьме. Том 1. Тысячи лет кача

NikL
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача

Полонянин

Гончаров Олег
2. Ночь Сварога
Приключения:
исторические приключения
8.30
рейтинг книги
Полонянин

Династия. Феникс

Майерс Александр
5. Династия
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Династия. Феникс

На границе империй. Том 8

INDIGO
12. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8

Аристократ из прошлого тысячелетия

Еслер Андрей
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аристократ из прошлого тысячелетия

Гримуар темного лорда IV

Грехов Тимофей
4. Гримуар темного лорда
Фантастика:
фэнтези
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда IV

Gloster Gladiator

Иванов С. В.
72. Война в воздухе
Научно-образовательная:
история
военная техника и вооружение
военная история
5.00
рейтинг книги
Gloster Gladiator

Серые сутки

Сай Ярослав
4. Медорфенов
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Серые сутки

Обрыв

Гончаров Иван Александрович
Проза:
классическая проза
русская классическая проза
8.93
рейтинг книги
Обрыв

Кодекс Крови. Книга ХI

Борзых М.
11. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХI

Метатель. Книга 2

Тарасов Ник
2. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель. Книга 2

Моров. Том 3

Кощеев Владимир
2. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Моров. Том 3

Старая школа рул

Ромов Дмитрий
1. Второгодка
Фантастика:
альтернативная история
6.00
рейтинг книги
Старая школа рул