Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Пример выполнения задания 2





В апплете FormDemo мы покажем приемы работы с компонентами, такими как переключатели, кнопки, текстовые поля и списки.

Мы разместили несколько таких компонент в окне этого апплета (рис. 7) таким образом, что они образуют собой форму. В этой форме вы можете ввести имя и фамилию, выбрать один из трех режимов работы, а также цвет.

Рис. 5. Окно аплета FormDemo

Переключатели First и Second активизируют однострочные текстовые поля редактирования Enter your first name и Enter your second name. После того как пользователь нажмет кнопку Ready, содержимое активных полей, а также состояние переключателей Mode 1, Mode 2 и Mode 3 будет отображено в многострочном поле редактирования. Это поле находится в нижней части окна апплета.

С помощью списка, расположенного справа от переключателя Mode 3, можно задавать цвет фона многострочного поля. Цвет устанавливается сразу после выбора новой строки из этого списка. К сожалению, при изменении размеров окна апплета находящиеся в нем компоненты изменяют свое расположение. Этот недостаток вы сможете устранить используя систему Layout Manager, с помощью которой можно управлять размещением компонент в окне апплета.

Листинг. Файл FormDemo.java

import java.applet.Applet;

import java.awt.*;

import java.util.*;

public class FormDemo extends Applet

{

Button btReady; // Поле btReady хранит ссылку на кнопку с надписью Ready

// В полях chbox1 и chbox2 записаны ссылки на переключатели с независимой

// фиксацией, которые используются для активизации однострочных

// текстовых полей

Checkbox chbox1;

Checkbox chbox2;

// Поле grRadio хранит ссылку на группу переключателей с зависимой фиксацией,

//определяющих режимы работы Mode 1, Mode 2 и Mode 3:

CheckboxGroup grRadio;

// Ссылки на эти переключатели находятся в следующих трех полях

Checkbox rd1;

Checkbox rd2;

Checkbox rd3;

// В поле ch1 хранится ссылка на список, предназначенный для выбора цвета

Choice ch1;

//Слева от однострочных полей редактирования в нашем окне имеются подписи,

//реализованные как объекты класса Label. Ссылки на эти объекты находятся

//в полях lbFirstName и lbSecondName

Label lbFirstName;

Label lbSecondName;

TextField txtFirstName; // ссылка на многострочное текстовое поле хранится в поле

TextField txtSecondName; // с именем txtFirstName и txtSecondName

TextArea txta;

// Метод init занимается созданием компонент и добавлением их в окно апплета.

// Кроме того, этот метод изменяет цвет фона окна апплета и окон добавляемых

// компонент.

// Прежде всего метод init создает два переключателя с независимой фиксацией,

// два объекта класса Label и два однострочных поля редактирования текста

public void init()

{

chbox1 = new Checkbox("First");

add(chbox1);

lbFirstName = new Label("Enter your first name:");

add(lbFirstName);

txtFirstName = new TextField(" ", 30);

add(txtFirstName);

chbox2 = new Checkbox("Second");

add(chbox2);

lbSecondName = new Label("Enter your second name:");

add(lbSecondName);

txtSecondName = new TextField(" ", 30);

// Поля создаются при помощи конструкторов, а добавляются в окно апплета

// методом add. Согласно схемы расположения компонент, установленой по

// умолчанию, добавляемые компоненты размещаются сверху вниз и слева

// направо.

 

add(txtSecondName);

// Для группы переключателей с зависимой фиксацией мы создаем объект

// класса CheckboxGroup

grRadio = new CheckboxGroup();

rd1 = new Checkbox("Mode 1", grRadio, true);

rd2 = new Checkbox("Mode 2", grRadio, false);

rd3 = new Checkbox("Mode 3", grRadio, false);

add(rd1); //Переключатели добавляются в окно апплета при помощи метода add

add(rd2);

add(rd3);

ch1 = new Choice(); // Список цветов создается как объект класса Choice

ch1.addItem("White");

ch1.addItem("Green");

ch1.addItem("Yellow");

add(ch1); // Вслед за этим мы добавляем сформированный список в окно апплета

setBackground(Color.yellow);

// В этом случае метод вызывается для текущего объекта, то есть для нашего

// апплета. Чтобы установить цвет фона в окнах компонент, мы вызываем метод

// setBackground для соответствующих объектов

lbFirstName.setBackground(Color.yellow);

lbSecondName.setBackground(Color.yellow);

rd1.setBackground(Color.yellow);

rd2.setBackground(Color.yellow);


rd3.setBackground(Color.yellow);

chbox1.setBackground(Color.yellow);

chbox2.setBackground(Color.yellow);

// Многострочное текстовое поле создается как объект класса TextArea.

// В нем 6 строк и 45 столбцов

txta = new TextArea("", 6, 45);

add(txta);

txta.setBackground(Color.white);

// последнее что делает метод init перед тем как вернуть управление,

// - создает кнопку с надписью Ready и добавляет ее в окно апплета

btReady = new Button("Ready");

add(btReady);

}

public String getAppletInfo()

{

return "Name: FormDemo";

}

public void paint(Graphics g)

{

Dimension dimAppWndDimension =

getSize();

g.setColor(Color.black);

g.drawRect(0, 0,

dimAppWndDimension.width - 1,

dimAppWndDimension.height - 1);

}

// В начале своей работы метод action определяет, какой компонент

// вызвал событие. Для этого анализируется поле evt.target:

public boolean action(Event evt, Object obj)

{

Button btn;

String str1, str2;

if (evt.target instanceof Button)

{

// Наш метод action обрабатывает события, вызываемые объектами классов

// Button и Choice. Если событие вызвано компонентом, относящимся к

// какому-либо другому классу, метод возвращает значение false. Этим он

// сигнализирует, что обработка события не выполнялась.

// В случае успешной обработки события метод action возвращает значение true.

// Если событие вызвано кнопкой, наш метод action проверяет, какой именно.

// Обработка выполняется только в том случае, если через поле evt.target

// передается ссылка на кнопку btReady:

if (evt.target.equals(btReady))

{

// В противном случае метод action возвращает значение false, отказываясь от

// обработки события. Что делает обработчик события, создаваемого кнопкой?

// Прежде всего, он сохраняет ссылку на кнопку в рабочей переменной

// (просто для того чтобы показать, как это делается):

btn = (Button)evt.target;

//Далее наш обработчик события извлекает текстовые строки из однострочных

//текстовых полей, вызывая для этого метод getText. Эти строки записываются в

//рабочие переменные str1 и str2

str1 = txtFirstName.getText();

str2 = txtSecondName.getText();

// Затем метод action проверяет состояние переключателей с независимой

// фиксацией chbox1 и chbox2. Если они включены, содержимое соответствующих

// временных переменных добавляется в многострочное текстовое поле txta:

 

if (chbox1.getState())

txta.append(str1);

if (chbox2.getState())

txta.append(str2);

// Аналогичным образом проверяется состояние переключателей с зависимой

// фиксацией

if (rd1.getState())

txta.append("\nMode 1\n");

if (rd2.getState())

txta.append("\nMode 2\n");

if (rd3.getState())

txta.append("\nMode 3\n");

}

Else

{

return false;

}

return true;

}

else if (evt.target instanceof Choice)

{

// Если событие вызвано списокм цветов ch1, то метод action определяет, какая

// строка списка стала выделенной и устанавливает в многострочном поле

// редактирования соответствующий цвет фона. Для определения выделенной

// строки применяется метод getSelectedIndex

if (evt.target.equals(ch1))


{

if (ch1.getSelectedIndex() == 0)

txta.setBackground(Color.white);

if (ch1.getSelectedIndex() == 1)

txta.setBackground(Color.green);

if( ch1.getSelectedIndex() == 2)

txta.setBackground(Color.yellow);

}

}

return false;

}

 







Date: 2015-10-18; view: 402; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.018 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию