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

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

Текстовые компоненты

Текстовые компоненты предназначаются для ввода и отображения строк.

Библиотека JDK предоставляет следующие классы текстовых компонентов:

  • java.awt.TextArea - текстовая область.
  • java.awt.TextField - текстовое поле, называемое также полем ввода.
  • javax.swing.JTextField - текстовое поле.
  • javax.swing.JPasswordField - текстовое поле, предназначаемое для ввода пароля.
  • javax.swing.JTextArea - текстовая область.
  • javax.swing.JEditorPane - панель редактора, позволяющая отображать как текстовые, так и графические данные, а также применять различное форматирование текста.
  • javax.swing.JTextPane - текстовая панель, позволяющая отображать содержимое с использованием различных шрифтов.

Все текстовые компоненты пакета java.awt наследуются от класса TextComponent.

Все текстовые компоненты пакета javax.swing наследуются от класса JTextComponent.

Для отображения текста, который может быть изменен только программным путем, служат компоненты .Label из пакета java.awt и JLabel из пакета javax.swing.

Компонент JLabel также можно использовать и для отображения рисунков.

Большинство названий методов, предоставляемых классами TextComponent и JTextComponent для работы с текстом, совпадают. Так, для того чтобы получить строку, которая содержит весь текст, расположенный в текстовом компоненте, можно использовать метод getText, а для получения позиции ввода - метод getCaretPosition ; для определения, можно ли редактировать текст, - метод isEditable, для выделения текста в указанном диапазоне - метод select, а для выделения всего текста - метод selectAll.

При каждом изменении значения текстового компонента, включая ввод каждого символа, происходит событие textValueChanged. При нажатии на клавишу Enter для текстового поля инициируется событие actionPerformed. Но при перемещении фокуса ввода событие actionPerformed не происходит.

Класс TextField позволяет создавать однострочные текстовые поля, используемые для ввода и редактирования одной строки текста. Этот класс предоставляет ряд методов, включая следующие:

  • AddActionListener - регистрирует блок прослушивания для обработки события действия компонента "текстовое поле".
  • EchoCharIsSet - возвращает значение true в том случае, если ввод в данное текстовое поле отображается некоторым эхо-символом, скрывающим действительное значение поля.
  • GetColumns - возвращает размер данного текстового поля (количество символов).
  • GetEchoChar - возвращает эхо-символ для данного текстового поля.
  • SetEchoCharacter - устанавливает значение эхо-символа для данного текстового поля. Любой вводимый пользователем символ будет экранирован данным эхо-символом.
  • SetColumns - устанавливает размер текстового поля в символах.
  • SetText - определяет новое значение текстового поля.

Хотя компоненты пакета javax.swing и называются облегченными, но они предоставляют значительно большие возможности, чем традиционные текстовые компоненты пакета java.awt.

Управление текстом, отображаемым в текстовом компоненте, определяется интерфейсом Document. Этот интерфейс предназначен для определения методов работы с текстом. Интерфейс Document реализован классом AbstractDocument.

Текст в компоненте типа JTextComponent представляется ассоциируемой с ним текстовой моделью, определяющей как содержание, так и стиль.

Фактически, текстовый компонент предоставляет доступ к:

  • модели, реализуемой на основе интерфейса Document и представляющей собой содержание документа;
  • области просмотра текстового компонента;
  • набору команд редактирования, предусмотренного для текстового компонента;
  • таблице ключей акселераторов, связанных с таблицей именованных действий.

Класс DefaultEditorKit и StyledEditorKit описывают набор именованных действий, которые можно использовать для создания на основе текстового компонента редактора текста.

В классе DefaultEditorKit определен набор предоставляемых текстовому компоненту действий, таких как перемещение курсора, выделение или вставка текста.

Например, для создания пункта меню, выполняющего форматирование выделенного диапазона текста, и изменения размера шрифта на 14p, следует записать:

menu.add(new StyledEditorKit.FontSizeAction (
                           "Имя пункта меню", 14));

Константы класса DefaultEditorKit описывают набор именованных действий, включая следующие:

  • BackwardAction - перемещение позиции ввода на одну позицию назад.
  • BeepAction - подача звукового сигнала.
  • BeginAction - перемещение позиции ввода на начало документа.
  • BeginParagraphAction - перемещение позиции ввода в начало абзаца.
  • BeginLineAction - перемещение позиции ввода в начало строки.
  • BeginWordAction - перемещение позиции ввода на начало текущего слова.
  • CutAction - вырезание выделенного диапазона текста и помещение его в буфер обмена.
  • CopyAction - копирование выделенного диапазона текста в буфер обмена.
  • DeleteNextCharAction - удаление следующего символа.
  • DownAction - перемещение позиции ввода на один ряд вниз.
  • DeletePrevCharAction - удаление предыдущего символа.
  • EndAction - перемещение позиции ввода в конец документа.
  • EndLineAction - перемещение позиции ввода в конец строки.
  • EndParagraphAction - перемещение позиции ввода в конец абзаца.
  • EndWordAction - перемещение позиции ввода на конец текущего слова.
  • ForwardAction - перемещение позиции ввода на один символ вперед.
  • InsertBreakAction - вставка в документ символа конца абзаца.
  • InsertTabAction - вставка символа табуляции.
  • NextWordAction - перемещение позиции ввода на начало следующего слова.
  • PageDownAction - перемещение позиции ввода на одну страницу вниз.
  • PageUpAction - перемещение позиции ввода на одну страницу вверх.
  • PasteAction - вставка содержимого буфера обмена вместо выделенного диапазона текста или перед текущей позицией ввода.
  • PreviousWordAction - перемещение позиции ввода на начало предыдущего слова.
  • ReadOnlyAction - перевод редактора в режим "только чтение".
  • SelectAllAction - выделение всего документа.
  • SelectionBackwardAction - расширение области выделения на одну позицию назад (влево).
  • SelectionBeginAction - расширение области выделения до начала документа.
  • SelectionBeginLineAction - расширение области выделения до начала текущей строки.
  • SelectionBeginParagraphAction - расширение области выделения до начала текущего абзаца.
  • SelectionBeginWordAction - расширение области выделения до начала текущего слова.
  • SelectionDownAction - расширение области выделения на одну позицию вниз.
  • SelectionEndAction - расширение области выделения до конца документа.
  • SelectionEndLineAction - расширение области выделения до конца строки.
  • SelectionEndParagraphAction - расширение области выделения до конца абзаца.
  • SelectionEndWordAction - расширение области выделения до конца текущего слова.
  • SelectionForwardAction - расширение области выделения на один символ вперед (вправо).
  • SelectionNextWordAction - расширение области выделения до начала следующего слова.
  • SelectionPreviousWordAction - расширение области выделения до начала предыдущего слова.
  • SelectionUpAction - расширение области выделения на одну позицию вверх.
  • SelectLineAction - выделение строки, в которой расположена позиция ввода.
  • SelectParagraphAction - выделение абзаца, в котором расположена позиция ввода.
  • SelectWordAction - выделение слова, в котором расположена позиция ввода.
  • UpAction - перемещение позиции ввода на одну позицию вниз.
  • WritableAction - перевод редактора в режим редактирования текста.
Александр Демьяненко
Александр Демьяненко

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

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

Добрый день!

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

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

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

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