Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Microsoft Visual J++. Создание приложений и аплетов на языке Java. Часть 1

© Александр Фролов, Григорий Фролов
Том 30, М.: Диалог-МИФИ, 1997, 288 стр.

[Назад] [Содеожание] [Дальше]

Списки класса List

На базе класса List вы можете сделать список другого типа, который допускает выбор не только одного, но и нескольких элементов. В отличие от списка, созданного на базе класса Choice, список класса List может занимать прямоугольную область, в которой помещаются сразу несколько элементов. Этот список всегда находится в раскрытом состоянии (рис. 5.8).

Рис. 5.8. Список класса List, все элементы которого помещаются в окне списка

Если размеры окна списка класса List недостаточны для того чтобы вместить в себя все элементы, в правой части окна списка автоматически создается полоса просмотра, с помощью которой можно пролистать весь список (рис. 5.9).

Рис. 5.9. Список класса List с полосой просмотра

Описание класса List

В классе List определено два конструктора и довольно много различных методов. Ниже мы привели краткое описание класса List:


public class java.awt.List
  extends java.awt.Component
{
  // -----------------------------------------------------
  // Конструкторы
  // -----------------------------------------------------

  // Конструктор без параметров
  public List();

  // Конструктор, позволяющий указать количество 
  // отображаемых строк и флаг одновременного 
  // выбора нескольких элементов
  public List(int rows, boolean multipleSelections);

  // -----------------------------------------------------
  // Методы
  // -----------------------------------------------------
  
  // Добавление элемента в список
  public void addItem(String item);

  // Добавление элемента в список с указанием номера позиции
  public void addItem(String item, int index);

  // Вызов метода createList
  public void addNotify();

  // Переключение списка в режим, при котором возможно
  // выбирать одновременно несколько элементов
  public boolean allowsMultipleSelections();

  // Удаление из списка всех элементов
  public void clear();

  // Определение количества элементов в списке
  public int countItems();

  // Удаление элемента из заданной позиции
  public void delItem(int position);	

  // Удаление нескольких элементов
  public void delItems(int start, int end);

  // Отмена выделения элемента с заданной позицией
  public void deselect(int index);

  // Получение строки, связанной с элементом, по
  // позиции этого элемента
  public String getItem(int index);

  // Определение количества элементов, которые
  // видны в окне списка
  public int getRows();

  // Определение номера выделенного элемента
  public int getSelectedIndex();

  // Определение номеров выделенных элементов
  public int[] getSelectedIndexes();

  // Получение текстовой строки, связанной с
  // выделенным элементом
  public String getSelectedItem();

  // Получение ссылки на массив строк, связанных
  // с выделенными элементами
  public String[] getSelectedItems();	

  // Определение номера элемента массива, который
  // был сделан в последний раз выделенным
  // с помощью метода makeVisible
  public int getVisibleIndex();

  // Проверка, является ли выделенной 
  // строка с заданным номером
  public boolean isSelected(int index);

  // Выполняется свертка элементов списка таким
  // образом, чтобы элемент с заданным номером
  // стал видимым
  public void makeVisible(int index);

  // Минимальные размеры области, необходимые 
  // для отображения списка
  public Dimension minimumSize();

  // Минимальные размеры области, необходимые 
  // для отображения списка с заданным 
  // количеством строк
  public Dimension minimumSize(int rows);

  // Получение строки параметров
  protected String paramString();

  // Предпочтительные размеры области, необходимые 
  // для отображения списка
  public Dimension preferredSize();

  // Предпочтительные размеры области, необходимые 
  // для отображения списка с заданным 
  // количеством строк
  public Dimension preferredSize(int rows);
  
  // Извещение об уничтожении узла
  public void removeNotify();

  // Замещение элемента списка с заданным номером
  public void replaceItem(String newValue, int index);

  // Выделение элемента с заданным номером
  public void select(int index);

  // Установка или сброс режима одновременного
  // выделения нескольких строк
  public void setMultipleSelections(boolean v);
}

Процесс создания списка класса List несложен:


List chBackgroundColor;
chBackgroundColor = new List(6, false);

При создании списка вы передаете конструктору количество одновременно отображаемых строк и флаг разрешения одновременного выбора нескольких строк. Если значение этого флага равно true, пользователь сможет выбирать из списка одновременно несколько строк, а если false - только одну строку.

Для наполнения списка вы можете использовать уже знакомый вам метод addItem:


chBackgroundColor.addItem("Yellow");
chBackgroundColor.addItem("Green");
chBackgroundColor.addItem("White");

Список класса List добавляется к окну аплета методом add:


add(chBackgroundColor);

Кратко остановимся на нескольких методах класса List.

Если вы разрешили пользователю выбирать из списка одновременно несколько элементов, то для получения ссылки на массив выбранных элементов вам пригодятся методы getSelectedItems и getSelectedIndexes:


public String[] getSelectedItems();	
public int[] getSelectedIndexes();

С помощью метода setMultipleSelections вы можете динамически включать или выключать режим одновременного выбора нескольких элементов.

В некоторых случаях вам может пригодиться метод clear, удаляющий все элементы из списка:


public void clear();

Методика использования других методов очевидна из краткого описания класса List, приведенного в этом разделе.

Обработка событий от списка класса List

В отличие от списка класса Choice, для выбора строки (или нескольких строк) из списка класса List, пользователь должен сделать двойной щелчок левой клавишей мыши по выделенному элементу (или элементам, если выделено несколько элементов). При этом событие можно обработать переопределенным методом action, как мы это делали для списка класса Choice.

Однако список класса List создает события не только при двойном щелчке, но и при выделении или отмены выделения элементов, сделанном пользователем одинарным щелчком клавиши мыши. Аплет может перехватывать и обрабатывать такие события, переопределив метод handleEvent. Пример такой обработки вы найдете в исходных текстах приложения ListBox.

[Назад] [Содеожание] [Дальше]