Введение в программирование

       

Списки


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

Библиотека 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.


Содержание раздела