Московский государственный университет имени М.В.Ломоносова
Опубликован: 01.11.2004 | Доступ: свободный | Студентов: 10559 / 332 | Оценка: 4.12 / 4.01 | Длительность: 19:18:00
ISBN: 978-5-9556-0077-9
Специальности: Программист
Лекция 27:

Библиотека классов JDK. Основы построения интерфейса пользователя на языке Java. Компоновки и элементы управления

Списки

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

Библиотека JDK содержит ряд классов списков, включая следующие:

  • java.awt.List - список.
  • java.awt.Choice - ниспадающий список.
  • javax.swing.JList - список.
  • javax.swing.JComboBox - ниспадающий список.

При выделении элемента в списке или в ниспадающем списке (или отмене выделения) инициируется событие itemStateChanged. В метод обработки этого события передается объект типа ItemEvent. Используя свойство SELECTED для объекта типа ItemEvent, можно определить, выделен ли элемент списка. Интерфейс ItemListener описывает метод обработки события itemStateChanged.

При двойном щелчке мышью на элементе списка (или нажатии клавиши Enter при выделенном элементе списка) для компонента типа List, JList или JComboBox инициируется событие actionPerformed. В метод обработки этого события передается объект типа ActionEvent. Интерфейс ActionListener описывает метод обработки события actionPerformed.

Заполнение списков можно выполнять в обработчике события фрейма windowOpened. Добавление элементов в список List и Choice выполняется методом add.

Например:

List list1 = new List(4, false);  // Создание списка 
     // с 4 видимыми строками и с запретом множественного выбора
list1.add("Строка 1");	// Добавление элементов в список
list1.add("Строка 2");
list1.add("Строка 3");
list1.add("Строка 4");
list1.add("Строка 5");
list1.add("Строка 6");
add(list1);		  // Добавление списка в текущий контейнер

Список JList позволяет выделять один или несколько элементов. Содержание списка представляется моделью ListModel. Доступ к элементам списка реализуется с использованием модели. Для заполнения списка используется метод setListData.

Список JList непосредственно не поддерживает прокрутку списка. Реализовать скроллинг можно двумя способами:

  • Поместить список в контейнер типа JScrollPane. Например:
    JScrollPane scrollPane = new JScrollPane(jList1);
  • Установить для объекта типа JScrollPane на уровне Viewport (getViewport) в качестве компонента области просмотра (setView) объект типа JList. Например:
    JScrollPane scrollPane = new JScrollPane();	
             scrollPane.getViewport().(jList1);

Например:

String[] data = {"один", "два", "три"};    // Массив строк
 JList jList1 = new JList(data);   // Создание списка, 
                            // содержащего массив строк
// Доступ к элементам списка через модель
 for(int i = 0; i<jList1.getModel().getSize(); i++) {
     System.out.println(jList1.getModel().getElementAt(i)); }
// Заполнение списка данными, представляемыми классом Vector
JList jList1 = new JList();
Vector superClasses = new Vector();
 Class rootClass = javax.swing.JList.class;  // Создание объекта 
                                             // типа Class
 for(Class cls = rootClass; cls != null; 
                                     cls = cls.getSuperclass()) 
{  // Получение всех подклассов
     superClasses.addElement(cls); }
jList1.setListData(superClasses); // Заполнение компонента jList1
                              // списком всех его подклассов
// Добавление элементов в список, хранимый в объекте типа Vector
   superClasses.addElement(new String("12345"));
// Выделение элементов списка:
 jList1.setSelectedIndex(1); // Выделение второго элемента списка
 jList1.getSelectedValue();  // Возвращает строку, отображаемую 
                            //во втором элементе списка
Листинг 27.3.
Александр Демьяненко
Александр Демьяненко

Можно ли сдавать один и тот же тест несколько раз?
Или же один и тот же тест можно сдать лишь однажды?

Максим Стогний
Максим Стогний

Добрый день!

Скажите, пожалуйста, если в терминологии объектно-ориентированного программирования функции также называются методами или методами - членами класса, в примере объявления указателя на метод использовали в формальном описании оба названия:

тип_метода (имя_класса::*имя_метода_указателя)
    (список параметров);
тип_функции (*имя_ функции_указателя)
    (список параметров);

при этом можно было  тип_функции во втором описании заменить на тип_метода? Т.е.:

тип_метода (*имя_ метода_указателя)
    (список параметров);

Андрей Панков
Андрей Панков
Россия, г. Челябинск, Южно-Уральский государственный университет, 2012
Александр Суворов
Александр Суворов
Россия, Пермь