Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Поля аплета MaxWD




Коротка характеристика використаних у програмі компонентів

Аплет MaxWD починається з повідомлення декількох змінних, які містять посилання на текстові поля, в які вводиться інформація про позику. Потім повідомляється змінна dolt, яка містить посилання на кнопку Compute.

У MaxWD також оголошені три змінні типу double, які містять інформацію про позику. Вихідна сума зберігається у змінній principal, річна ставка доходу зберігається у змінній rateOfRet і термін виплат знаходиться у змінній numYears. Ці три значення вводяться користувачем у текстові поля. Потім оголошується цілочисельна змінна numPerYear, яка не міняється та ініціалізується значенням 12. Таким чином, протягом року виплати проводяться 12 разів, тобто один раз на місяць, як і прийнято в більшості випадків.

Але можна дозволити вводити це значення користувачеві, для чого необхідно створити ще одне текстове поле введення.

Останньою змінною, яка оголошена в класі MaxWD, є змінна nf, яка представляє посилання на об'єкт типу NumberFormat, який використовується для задання числового формату.

Метод init()

Як і у всіх інших аплетах, метод init()викликається, коли аплет викликається на виконання вперше. Цей метод виконує такі основні завдання:
- змінює тип розташування на GridBagLayout;

- ініціалізує різні компоненти;

- додає компоненти в таблицю;

- додає слухачів для компонентів.

Розглянемо метод init() рядок за рядком. Метод починається з наступних рядків коду.

/ / Використовувати розташування GridBagLayout.

GridBagLayout gbag = new GridBagLayout();

GridBagConstraints gbc = new GridBagConstraints();

setLayout(gbag);

Для більшості невеликих аплетів найбільш підходить тип розташування FlowLayout, що і встановлюється за умовчанням. Але оскільки у фінансових аплетах потрібно, щоб користувач вводив вихідні значення, необхідно забезпечити більший контроль за компонентами, розташованими у вікні аплета. Це зручно зробити за допомогою типу розташування GridBagLayout, для отримання якого використовується клас GridBagLayout. Перевага використання цього класу полягає в тому, що можна задати відносне розташування компонентів у вікні. Розташування компонентів відбувається по лініях сітки, при цьому кожен рядок може мати різну кількість стовпців і кожен компонент може мати різні розміри. Саме тому таке розташування називається багатосітковим (grid bag). Це колекція окремих сіток, з'єднаних разом.

Розташування та розміри кожного компонента на сітці визначаються набором обмежувачів, пов'язаних з ним. Обмежувачі містяться в об'єкті типу GridBagConstraints. Обмежувачі містять висоту і ширину компонента, вирівнювання компонента і точку його прив'язки.

Потім у методі init() створюються написи, текстові поля і кнопка Compute, як показано у фрагменті нижче.

Label heading = new

Label("Maximum Regular Withdrawals");

Label orgPLab = new Label("Original Principal");

Label periodLab = new Label("Years");

Label rateLab = new Label("Rate of Return");

Label numWDLab =

new Label("Number of Withdrawals per Year");

Label maxWDLab = new Label("Maximum Withdrawal");

maxWDText = new TextField(16);

periodText = new TextField(16);

orgPText = new TextField(16);

rateText = new TextField(16);

numWDText = new TextField(16);

// Max withdrawal field for display only.

maxWDText.setEditable(false);

doIt = new Button("Compute");

Потім для кожного компонента задаються обмежувачі, як показано у фрагменті нижче.

/ / Поставити сітку.

gbc.weighty = 1.0; // use a row weight of 1

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbc.anchor = GridBagConstraints.NORTH;

gbag.setConstraints(heading, gbc);

// Anchor most components to the right.

gbc.anchor = GridBagConstraints.EAST;

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(orgPLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(orgPText, gbc);

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(periodLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(periodText, gbc);

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(rateLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(rateText, gbc);

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(numWDLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(numWDText, gbc);

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(maxWDLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(maxWDText, gbc);

gbc.anchor = GridBagConstraints.CENTER;

gbag.setConstraints(doIt, gbc).

Спочатку коефіцієнт кожного рядка, що зберігається у змінній gbc.weighty, встановлюється в 1. Це вказівка ​​менеджеру GridBagLayout рівномірно розподілити додатковий простір по вертикалі, який залишається після розміщення компонентів. Потім зміннії gbc.gridwidth присвоюється значення REMAINDER, а змінній gbc.anchor присвоюється значення NORTH. З допомогою методу setConstraints() для об'єкта gbag додається напис, на який посилається змінна heading. Така послідовність встановлює положення заголовка вгорі сітки (north) і залишає залишок рядка. Таким чином, після виконання цієї послідовності рядків заголовок буде розташовуватися вгорі вікна і на рядку.

Потім додаються чотири текстових поля і відповідні написи. Спочатку присвоюється значення ЕАST для змінної gbc.anchor. Це призводить до вирівнювання всіх елементів управління по правій стороні. Потім змінної gridWidth присвоюється значення RELATIVE і додаються написи. Після цього змінній присвоюється значення REMAINDER і додаються текстові поля. Таким чином, кожне текстове поле і напис займають по одному рядку. Цей процес повторюється до тих пір, поки всі чотири текстових поля і написи не будуть додані. Нарешті, в центр останньої рядок додається кнопка Compute.

Після задання всіх обмежувачів, компоненти додаються в вікно за допомогою наступного коду.

add(heading);

add(orgPLab);

add(orgPText);

add(periodLab);

add(periodText);

add(rateLab);

add(rateText);

add(numWDLab);

add(numWDText);

add(maxWDLab);

add(maxWDText);

add(doIt);

Потім для трьох текстових полів і кнопки Compute реєструються слухачі, як показано в наступному коді.

/ / Реєстрація для прийому повідомлень про події.

orgPText.addActionListener(this);

periodText.addActionListener(this);

rateText.addActionListener(this);

numWDText.addActionListener(this);

doIt.addActionListener(this);

Нарешті, встановлюється числовий формат для виводу двох десяткових цифр.

nf = NumberFormat.getInstance();

nf.setMinimumFractionDigits(2);

nf.setMaximumFractionDigits(2);

Метод paint()

Метод paint() виконує три основні завдання: отримує інформацію про вкладення, що вводиться користувачем, викликає метод compute() для підрахунку прибутку, і відображає результат розрахунку. Розглянемо докладніше метод paint().

Після оголошення змінних в методі paint() заповнюються рядки з трьох полів введення, як показано нижче.

String orgPStr = orgPText.getText();

String periodStr = periodText.getText();

String rateStr = rateText.getText();

String numWDStr = numWDText.getText();

try {

if(orgPStr.length()!= 0 &&

periodStr.length()!= 0 &&

Якщо заповнені всі три поля, то визначаються числові значення, що відповідають цим рядкам, і зберігаються в окремих змінних. Потім викликається метод compute() для розрахунку доходу і результат відображається в текстовому полі лише для читання, на яке посилається змінна paymentText, як показано нижче.

principal = Double.parseDouble(orgPStr);

numYears = Double.parseDouble(periodStr);

rateOfRet = Double.parseDouble(rateStr) / 100;

numPerYear = Integer.parseInt(numWDStr);

result = compute();

maxWDText.setText(nf.format(result));

Якщо користувач ввів не число в одному з полів, то в методі Double.parseDouble() буде згенерована виняткова ситуація NumberFormatException. У цьому випадку в рядку стану буде відображатися повідомлення про помилку і текстове поле буде очищено, як показано нижче.

showStatus(""); // Видалити всі попередні повідомлення.

showStatus(""); // erase any previous error message

catch (NumberFormatException exc) {

showStatus("Invalid Data");

maxWDText.setText("");

Метод compute()

Розрахунок виплати за позикою відбувається в методі compute(). Тут просто реалізовано обчислення за формулою, описаною вище, при цьому використовуються змінні principal, rateOfRet, numYears, і numPerYear. Повертається результат розрахунку.


 




Поделиться с друзьями:


Дата добавления: 2015-06-04; Просмотров: 440; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.029 сек.