| Назад
    Вперед 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.  
 Назад Вперед |