С добавлением кодеков в созданный проигрыватель возникла небольшая задержка, которую можно заполнить
тренировкой по закреплению усвоенного материала. Сделаем апплет-арифмометр. Арифметика
в Java представлена... Смело можно пользоватся следующими методами:
Math.abs(n) — возвращает модуль числа n.
Math.round(n) — возвращает целое число, ближайшее к
вещественному числу n (округляет n).
Math.ceil(n) — возвращает ближайшее к числу n справа
число с нулевой дробной частью (например,
Math.ceil(3.4) в результате вернёт 4.0).
Math.cos(n), Math.sin(n), Math.tan(n) — тригонометрические функции
sin, cos и tg от аргумента n, указанного в радианах.
Math.acos(n), Math.asin(n), Math.atan(n) — обратные тригонометрические
функции, возвращают угол в радианах.
Math.toDegrees(n) — возвращает градусную меру угла в n радианов.
Math.toRadians(n) — возвращает радианную меру угла в n градусов.
Math.sqrt(n) — возвращает квадратный корень из n.
Math.pow(n, b) — возвращает значение степенной функции n в
степени b, основание и показатель степени могут быть вещественными.
Math.log(n) — возвращает значение натурального логарифма числа n.
Math.log10(n) — возвращает значение десятичного логарифма числа n.
Math.PI — число «пи», с точностью в 15 десятичных знаков.
Math.E— число Неппера (основание экспоненциальной функции),
с точностью в 15 десятичных знаков.
рис.8
Как мы видим - арифметикой в Java занимается class Math (не каламбур).
Использовать всё вышеперечисленное мы не будем, ограничимся четыремя основными действиями (+,-,* и :)
плюс - извлечение квадратного корня (КК), возведение в квадрат (n2) и в куб(n3):
Компоновка исходного файла - стандартная (рис.8.1). Используемые кнопки активируются за счёт анонимных классов.
На первый взгляд - это несколько громоздко, зато - надёжно. Для удобства понимания - классы
развёрнуты в столбик. Код рабочего апплет-арифмометра выглядит более компактно. Код не сложный,
просто - много повторений. Для разнообразия - кнопки расцвечены, а символы на них - увеличены:
button = new JButton("<html><h1><font color=\"цвет\">символ на кнопке");
button.setBackground(Color.цвет);
Можно было задействовать цикл для кнопок, разделить файл на два...Не
думаю, что это упростит программу. Однако, кое-чему следует уделить особое внимание...
...доступность
переменных:
Создавая программу мы заявили несколько переменных, в том числе три простых и одну
строчную. Хотя, это не совсем переменная: JTextField display - это
экран для отображения набраных чисел; char select = ' ' - это переменная хранящая тип
арифметической операции; double currentResult = ' ' - здесь будет хранится всё, что мы
наберём; double displayValue = ' ' - здесь будет хранится набранное число, приведённое
к десятичному основанию; String displayText - здесь будет хранится набранное число,
состоящее из цифр и символа "точка" - это строчная переменная;
В созданной нами программе существует несколько областей видимости переменных (названия - условны): глобальная (класс: 009-222) локальная (например, метод-конструктор: 018-207) внутренняя
(например, анонимный класс: 065-067) и т.д. Другими словами, область видимости - это всё, что
находится внутри фигурных скобок {...}, а единственный способ её создания - вложенность.
Следует помнить, что переменные (как объекты) доступны только в пределах области видимости, где они заявлены:
объекты, заявленные во внешней области, будут "видны" коду, определённому во внутренней области
он может их использовать. В обратную сторону - это не работает.
А самое главное - эти правила не распространяются на значение переменной: значение
переменной, заявленное во внешней области, недоступно коду находящемуся во внутренней
области.Попытка использования внешних значений переменных внутренним кодом
приводит к следующему заявлению компилятора - ошибка: переменная ... доступна
из внутреннего класса; необходимо декларировать финал. *** Файл мы скомпилируем и...
заархивируем. В результате этих действий - наш арифмометр будет выглядеть так:
Вещь это не сложная, к локальным файлам не лезет. Думаю - будет работать.
Помните: кнопки левой колонки работают сразу, а действия кнопок в правой колонке - необходимо
подтверждать ("=").
jffmpeg - это..?
Говорят, что JMF станет лучше, если туда добавить библиотеку jffmpeg-1.1.0.jar.
Станет или нет - однозначного мнения здесь не существует. Всё зависит от вашего отношения к понятию applet.