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

Для выбора строки (или нескольких строк) из списка класса 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; }

2.5 Полосы прокрутки

Полосы прокрутки к спискам, меню выбора и полям редактирования при необходимости добавляются автоматически. Но можно использовать их и как независимые, отдельные компоненты для обеспечения прокрутки необходимой информации. Создание линейки прокрутки (класс Scrollbar)и добавление ее в контейнер осуществляется, например, следующим образом:

Scrollbar

scrlbar=new Scrollbar.HORIZONTAL,25,15,1,100);

add(scrlbar);

Здесь создается горизонтальная линейка прокрутки, ширина которой на экране равна 15. Начальное значение (текущее положение бегунка линейки прокрутки) установлено равным 25, минимальное возможное значение равно 1, а максимальное - 100.

При помощи методов изменять установки линейки прокрутки. Метод setValue() изменяет текущее положение бегунка, а метод setValues() изменяет параметры полосы прокрутки, задаваемые при ее создании. Для установки строчного и страничного инкремента полосы прокрутки используются методы setLineIncrement() и setPageIncrement().

Для получении информации о линейке используются следующие методы. Метод getValue() возвращает текущее положение бегунка, методы getMaximum() и getMinimum() - возвращают максимальное и минимальное значение для полосы прокрутки. Для получения строчного и страничного инкремента полосы прокрутки используются методы getLineIncrement() и getPageIncrement().

Ширину полосы прокрутки на экране (величину ее видимой части) можно узнать методом getVisible(), а ориентация полосы прокрутки определяется методом getOrientation().