Назад
Вперед
3.7. Списки класса Choice
В примере мы показали использование списка
класса Choice для перехда на странице Web к просмотру
различных документов HTML.
Исходный текст примера
Архив проекта для Java WorkShop 2.0
Демонстрация
(ваш браузер должен уметь работать с аплетами
Java)
Немного теории
Приложения Java могут легко создать
раскрывающиеся, или как еще говорят,
"выпадающие" списки на базе класса Choice.
Конструктор этого класса не имеет параметров.
Создав объект-список, вы можете его наполнить при
помощи метода addItem.
Когда пользователь работает со списком,
контейнер, где этот список расположен, получает
извещения о возникновении событий. Чтобы их
обработать, приложению достаточно определить
метод action.
Внутри этого метода или в любом другом месте вы
можете выполнять над списком ряд операций.
Например, при помощи методов getSelectedItem и getSelectedIndex
нетрудно определить, соответственно, название и
номер строки, выделенной в списке пользователем.
Метод countItems позволяет узнать количество строк,
имеющихся в списке, а метод getItem предназначен для
извлечения произвольной строки по ее номеру.
Приложение может также выделить элемент списка
по номеру или по содержащейся в ней строке при
помощи одной из двух реализаций метода select.
Описание примера
В окне нашего аплета, показанном на рис. 1,
имеется список адресов URL и кнопка с надписью Go.
Вы можете выбрать нужный вам адрес, сделав щелчок
мышью по небольшой кнопке с изображением
треугольника, расположенной в правой части
списка.
Рис. 1. Список класса Choice в окне аплета
Если нажать на кнопку Go, в окно браузера будет
загружен документ HTML с адресом URL, выбранном из
списка.
Поля главного класса
В главном классе нашего приложения мы
определили три поля:
Choice chURLs;
Button btnGo;
String szURLtoGo;
Поле chURLs хранит ссылку на список, поле btnGo -
ссылку на кнопку, а в поле szURLtoGo записывается
текущий адрес URL, выбранный пользователем в
процессе работы со списком.
Метод init
При инициализации аплета метод init создает
список класса Choice и кнопку класса Button:
chURLs = new Choice();
btnGo = new Button("Go!");
Список и кнопка добавляются затем в окно аплета
при помощи метода add:
add(chURLs);
add(btnGo);
Наполнение списка выполняется методом addItem,
определенным в классе Choice:
chURLs.addItem("http://www.sun.com");
chURLs.addItem("http://www.sun.ru");
chURLs.addItem(
"http://www.altavista.com");
chURLs.addItem(
"http://www.glasnet.ru/~frolov");
Здесь мы добавили четыре строки, содержащие
адреса URL различных серверов Web.
Последнее действие, выполняемое методом init, это
установка желтого цвета фона для окна аплета:
setBackground(Color.yellow);
Метод action
Когда пользователь перебирает строки списка
или нажимает кнопку Go, управление передается
методу action. Этот метод определяет, какой объект
вызвал появление события (список или кнопка), а
затем выполняет его обработку.
Если событие связано со списком, поле evt.target
является ссылкой на объект класса Choice. В этом
случае мы получаем ссылку на этот объкт и
записываем ее в переменную ch, как это показано
ниже:
Choice ch;
int nSelectedIndex;
if(evt.target instanceof Choice)
{
ch = (Choice)evt.target;
. . .
}
Затем проверяется, от какой именно список
вызвал появление события. Мы выполняем такую
проверку только для демонстрации, так как наш
аплет создает всего лишь один список:
if(ch.equals(chURLs))
{
nSelectedIndex = ch.getSelectedIndex();
szURLtoGo = ch.getSelectedItem();
return true;
}
Далее метод action извлекает номер выделенной
строки, а также саму эту строку, сохраняя
полученные значения, соответственно, в полях
nSelectedIndex и szURLtoGo. Фактически нам здесь нужна
только строка szURLtoGo, так как именно она будет
содержать адрес URL загружаемого документа HTML.
В том случае если метод action был вызван как
результат нажатия на кнопку, мы вызываем метод
goURL, определенный в главном классе нашего аплета:
else if(evt.target instanceof Button)
{
if(evt.target.equals(btnGo))
{
goURL(szURLtoGo);
return true;
}
}
Этот метод загрузит нужный документ HTML в окно
браузера. Адрес URL документа передается методу
goURL как ссылка на поле szURLtoGo. Напомним, что в это
поле записывается текущая строка, выделенная
пользователем в списке.
Метод goURL
Исходный текст метода goURL представлен ниже:
public void goURL(String szURL)
{
if(szURL != null)
{
URL url = null;
AppletContext appletContext;
appletContext = getAppletContext();
try
{
url = new URL(szURL);
}
catch (MalformedURLException e) { }
if (url != null)
{
appletContext.showDocument(
url, "_self");
}
}
}
Прежде всего, метод проверяет строку адреса,
переданную ему через параметр, на равенство
значению null. Если строка пустая, метод не
предпринимает никаких действий.
В противном случае метод goURL получает контекст
выполнения аплета (то есть контекст браузера),
пользуясь для этого методом getAppletContext. Он
используется впоследствии для вызова метода
showDocument, загружающего в окно браузера новый
документ HTML.
Адрес загружаемого документа формируется как
объект класса URL с обработкой возможных
исключений класса MalformedURLException.
Назад Вперед |