Java Advanced Интерфейс пользователя Часть 3. 2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Содержание 1.Паттерн модель-вид-контроллер.

Презентация:



Advertisements
Похожие презентации
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Advertisements

Школьная форма Презентация для родительского собрания.
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Типовые расчёты Растворы
Java Advanced XML Transformations 1.0 (XSLT 1.0).
1. Определить последовательность проезда перекрестка
Michael Jackson
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Разработал: Учитель химии, биологии высшей квалификационной категории Баженов Алексей Анатольевич.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
Ф. Т. Алескеров, Л. Г. Егорова НИУ ВШЭ VI Московская международная конференция по исследованию операций (ORM2010) Москва, октября 2010 Так ли уж.
Создание и редактирование таблиц. Каждая таблица состоит из некоторого количества строк и столбцов. На пересечении строки и столбца находится ячейка таблицы.
Текстовый редактор Word Создание и редактирование таблиц.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от
Выполнение запросов, создание и редактирование отчета MS Access.
Г. Москва, тел.: +7 (495) , Internet: Слайды курса «Администрирование работы на сервере.
Модуль 2 Документы в текстовом редакторе Microsoft Word 2003.
Создание текстового документа сложной структуры Создание текстового документа сложной структуры Слайд 1 Король Н. В. Орлова Г. Д. Ноябрь 2012.
Транксрипт:

Java Advanced Интерфейс пользователя Часть 3

2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Содержание 1.Паттерн модель-вид-контроллер и Swing 2.Простые модели 3.Списки 4.Таблицы 5.Текстовые компоненты 6.Заключение

Паттерн модель-вид- контроллер и Swing Часть 1

4Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Паттерн модель-вид-контроллер Модель Хранит данные Вид Отображает данные Контроллер Обеспечивает взаимодействие вида и модели

5Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Модель Swing Вид и контроллер совмещены в компоненте Компонента устанавливает слушателя модели

6Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Типы моделей GUI-модели Определяют текущий компонента Интерфейс ListSelectionModel Модели данных Хранят данные Интерфейс ListModel

7Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Типы событий Lightweight Сообщают о факте изменения Класс ChangeEvent Stateful Сообщают что и как изменилось Класс ListDataEvent

Простые модели Часть 2

9Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Модель кнопки Интерфейс ButtonModel Свойства actionCommand – команда mnemonic – мнемоника group – группа кнопок armed – сработает при отпускании pressed – нажата rollover – курсор над кнопкой enabled – разрешена selected – выбрана

10Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Реализации моделей кнопки Классы DefaultButtonModel – модель кнопки по умолчанию JToggleButton.ToggleButtonModel – модель кнопки-переключателя

11Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Модель-диапазон Интерфейс BoundedRangeModel Свойства maximum – максимальное значение minimum – минимальное значение value – текущее значение extent – видимая часть valueIsAdjusting – меняется ли значение Реализации Класс DefaultBoundedRangeModel

12Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Использование модели-диапазона Компоненты JScrollBar – полоса прокрутки JProgressBar –индикатор прогресса JSlider – бегунок

Списки Часть 3

14Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Списки Класс JList Модели ListModel – модель элементов списка ListSelectionModel – модель выбора элементов События ListSelectionEvent – изменились выбранные элементы

15Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Модель списка Интерфейс ListModel Свойства size – количество элементов elementAt(index) – элемент по номеру Событие ListDataEvent

16Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Порождение событий Класс AbstractListModel Методы Должны вызываться после изменения fireContentChanged(source, from, to) – известить об изменении fireIntervalAdded(source, from, to) – известить о добавлении fireIntervalRemoved(source, from, to) – известить об удалении

17Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Модель списка по умолчанию Класс DefaultListModel Похожа на реализацию списка Методы add(index, object) / addElement(object) – добавление элемента get(index) / elementAt(index) – получение элемента removeElement(object) / removeElementAt(index) – удаление элемента set(index, object) – установка элемента …

18Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Отображение элементов списка Интерфейс ListCellRenderer Метод getListCellRendererComponent( JList list, Object value, int index, boolean sSelected, boolean cellHasFocus) – возвращает компоненту для отрисовки JList.setCellRender(renderer) – установка Класс DefaultListCellRenderer

19Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Принцип работы При отрисовке элемента списка Берется соответствующая компонента Рисуется в том месте, в котором находится элемент списка Выбрасывается

20Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Модель выбора элементов Обычно используется стандартная Свойства JList selectionMode – режим выбора Режимы SINGLE_SELECTION – одиночный элемент SINGLE_INTERVAL_SELECTION – непрерывный интервал MULTIPLE_INTERVAL_SELECTION – несколько интервалов

21Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Выбранные значения Свойства selectedIndex – индекс первого выбранного элемента selectedValue – первый выбранный элемент selectedIndices – индексы выбранных элементы selectedValues – значения выбранных элементов

22Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Выпадающие списки Класс JComboBox Модели ComboBoxModel extends ListModel MutableComboBoxModel extends ComboBoxModel Свойства модели selectedItem – выбранный элемент Реализации модели DefaultComboBoxModel – модель по умолчанию

Таблицы Часть 4

24Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Таблицы Класс JTable Модели TableModel – модель данных ColumnModel – модель столбцов

25Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Модель данных Интерфейс TableModel Методы getColumnCount() – количество столбцов getRowCount() – количество строк getValueAt(row, col) – получить значение setValueAt(row, col) – записать значение isCellEditable(row, col) – можно ли изменять значение getColumnName(col) – название столбца Событие TableModelEvent

26Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Порождение событий Класс AbstractTableModel Методы fireTableCellUpdated(row, col) – известить об изменении ячейки fireTableRowsUpdated(Inserted, Deleted)(from, to) – известить о изменении/добавлении/удалении сточек fireTableDataChanged() – известить об изменении данных fireTableStructureChanged() – известить об изменении столбцов

27Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Модель таблицы по умолчанию Класс DefaultTableModel Позволяет Добавлять/убирать/перемещать строки Добавлять/убирать/перемещать столбцы Оперировать заголовками столбцов

28Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Модель столбцов Класс TableColumnModel Позволяет переставлять столбцы Хранит набор TableColumn Для каждого столбца хранит Заголовок Cell renderer Header renderer

Текстовые компоненты Часть 5

30Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Классы текстовых компонет JTextComponen t Базовый класс JTextField JPasswordField JTextAreaJEditorPane JTextPane Однострочные Многострочный без форматирования Многострочные с форматированием

31Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Структура текстовой компоненты Модель Интерфейс Document Вид Класс View Контроллер Класс EditorKit

32Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Виды документов AbstractDocument Базовый класс PlainDocument Без форматирования DefaultStyledDocument С форматированием HTMLDocument HTML-документ

33Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Документ как текст Документ состоит из символов Смещение – расстояние от начала документа Диапазон – текст между двумя смещениями

34Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Местоположения Отслеживает местоположение текста в документе Интерфейс Position Методы getOffset() – смещение Document.createPositio n(offset) – создание местоположения

35Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Структура элементов Документ состоит из элементов Элементы состоят из элементов

36Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Элементы Интерфейс Element Методы getName() – имя элемента getStartOffset() – смещение начала getEndOffset() – смещение конца getParentElement() – подительский элемент getElementCount() – количество детей getElement(index) – вложенный элемент getElementIndex(offset) – номер ребенка, содержащего смещение getAttributes() – атрибуты элемента

37Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Атрибуты элемента Интерфейс AttributeSet Методы getAttributeCount() – количество атрибутов getAttribute(key) – получить атрибут isDefined(key) – определен ли атрибут containsAttribute(key, value) – имеет ли атрибут указанное значение

38Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Пример: полужирный текст Является ли текст со смещением offset полужирным // Получение корневого элемента текста Element element = document.getDefaultRootElement(); int index; while ((index = element.getElementIndex(offset)) >= 0) { element = element.getElement(index); } AttributeSet attributes = element.getAttributes(); // Получение результата return attributes.containsAttribute(StyleConstants.Bold, Boolean.TRUE);

39Georgiy KorneevJava Advanced / Интерфейс пользователя 3 События документа Класс DocumentEvent Подсобытия changedUpdate – изменили текст insertUpdate – вставили текст removeUpdate – удалили текст Методы getOffset() – смещение изменения getLength() – длина изменения getDocument() – изменившийся документ getChange(Element) – информация об изменении структуры документа

40Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Вид Класс JTextComponent Состав Курсор и выделение Подсвечивание текста Ограничитель перемещения курсора

41Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Операции с видом Методы JTextComponent cut() / copy() / paste() – операции с выделением getSelectedText() – выделенный текст … Свойства JTextComponent editable – возможность редактирования selectionStart(End) – выделение document – редактируемый документ editorKit – используемый контроллер caret – используемые курсор и выделение …

42Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Курсор и выделение Класс Caret Событие CaretEvent Методы getDot() – смещение курсора getMark() – смещение начала выделения moveDot() – переместить курсор moveMark() – переместить начало выделения

43Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Контроллер Класс EditorKit Методы read(…, document, offset, length) – прочитать с диска write(…, document, offset, length) – записать на диск getActions() – возможные действия getContentType() – MIME-тип документа …

44Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Виды контроллеров EditorKit Базовый класс DefaultEditorKit По умолчанию StyledEditorKit Cо стилями HTMLEditorKit Редактирование HTML RTFEditorKit Редактирование RTF

45Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Элементы управления Возможные действия с документами Класс DefaultEditorKit.CopyAction Класс StyledEditorKit.FontSizeAction … Названия действий по умолчанию forwardAction – на смивол вперед beginLineAction – в начало строки endLineAction – в конец строки …

Заключение Часть 6

47Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Ссылки Creating a GUI with JFC/Swing (Tutorial) // Java Foundation Classes // Swing Connection //

48 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 3 Вопросы