Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

2.4 Раскрывающиеся списки

Раскрывающиеся списки особенно полезны, если необходимо объединить функциональные возможности меню с возможностью множественного выбора элементов.

Для создания списка необходимо создать объект класса List и ввести в него любые элементы. Затем необходимо этот объект добавить в контейнер:

// создать список с тремя видимыми элементами и с возможностью

// множественного выбора (передача true во втором параметре)

List list=new List(3, true);

// добавить в него элементы

list.addItem("1st item");

list.addItem("2nd item");

list.addItem("3rd item");

// добавить список list в контейнер

add(list);

Рассмотрим некоторые методы класса List. Количество элементов выбора в списке можно определить при помощи метода countItem(). Добавляются элементы в список методом addItem(), удаляются из него методом delItem(). Для очистки всего списка используется метод clear(). Для того, чтобы заменить элемент с заданным номером, используется метод replaceItem(). Получить название какого-либо элемента (его строковое представление) по его порядковому номеру можно с помощью функции getItem().

Для того, чтобы определить индекс(ы) и строковое(ые) представление(ия) выбранного(ных) в списке элемента(ов), предназначены методы getSelectIndex() (getSelectIndexes()) и getSelectItem() (getSelectItems()). Элемент можно выделить как выбранный в списке при помощи метода select(). Снять выделение с помеченного элемента можно методом deselect(). Проверить, является ли элемент выделенным, можно при помощи метода isSelected().

Методом getRows() можно определить количество одновременно видимых элементов списка (его высоту). Методом makeVisible() можно осуществить прокрутку в списке так, чтобы элемент с заданным индексом стал видим.

Метод setMultipleSelections() разрешает или запрещает выбор нескольких элементов одновременно, а метод allowsMultipleSelections() позволяет определить, разрешен ли для списка множественный выбор.

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

Для выбора строки (или нескольких строк) из списка класса List, пользователь должен сделать двойной щелчок клавишей мыши по выделенному элементу (или элементам). Этим он отличается от меню выбора: в меню выбора элемент выбирается одинарным щелчком мыши. Для обработки таких событий от списков следует внести в метод action() контейнера, содержащего эти списки, следующий фрагмент:

// процесс обработки событий выбора элементов списка

if(evt.target instanceof List)

{// получаем ссылку на список, вызвавший событие

List lst=(List)evt.target;

// проверка, от какого именно списка пришло событие и

// обработка этого события от конкретного списка

.............................................

return true; // если событие обработано, иначе return false }

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

public boolean handleEvent(Event evt)

{ switch(evt.id)

{ default:// передача сообщения на обработку

// методу базового класса

return super.handleEvent(evt);

case Event.ACTION_EVENT:

// процесс обработки событий выбора элементов списка

if(evt.target instanceof List)

{// получаем ссылку на список, вызвавший событие

List lst=(List)evt.target;

// проверка, от какого именно списка пришло

// событие и обработка этого события от

// конкретного списка

.............................................

// если событие обработано, иначе return false

return true; }

break;

case Event.LIST_SELECT:

// процесс обработки событий выделения элементов списка

if(evt.target instanceof List)

{// получаем ссылку на список, вызвавший событие

List lst=(List)evt.target;

// проверка, от какого именно списка пришло

// событие и обработка этого события от

// конкретного списка

.............................................

// если событие обработано, иначе return false

return true; }

break;

case Event.LIST_DESELECT:

// процесс обработки событий отмены выделения

// элементов списка

if(evt.target instanceof List)

{// получаем ссылку на список, вызвавший событие

List lst=(List)evt.target;

// проверка, от какого именно списка пришло

// событие и обработка этого события от

// конкретного списка

.............................................

// если событие обработано, иначе return false

return true; }

break; }

return true; }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]