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

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

Для того чтобы добавить в документ строку в отформатированном виде, можно использовать метод insertS класса DefaultStyledDocument. Этот класс является подклассом класса AbstractDocument и реализует интерфейсы Document и StyledDocument.

Интерфейс StyledDocument определяет методы для работы со стилем документа. Так, для назначения диапазону текста набора атрибутов стиля можно использовать метод setCharacter-Attributes, а для определения используемого стиля или шрифта - методы getStyle и getFont.

Атрибуты стиля определяются интерфейсом AttributeSet. Этот интерфейс реализован классом SimpleAttributeSet.

Для создания набора атрибутов стиля следует создать переменную типа SimpleAttributeSet и установить атрибуты стиля, используя методы класса

Например:

SimpleAttributeSet attrSt = new SimpleAttributeSet();
StyleConstants.setBold(attrSt, true);
StyleConstants.setFontSize(attrSt, 12);
StyleConstants.setForeground(attrSt, Color.red);

При добавлении строки в текстовый документ вызовом метода insertString класса Default-StyledDocument один из параметров ссылается на набор аттрибутов.

Фактически набор атрибутов стиля накладывается на диапазон текста. Если текстовый компонент содержит текст с различным форматированием, то на каждый отдельный диапазон текста должен быть "наложен" свой набор атрибутов стиля.

Для создания таблицы ключей акселераторов, используемых для текстового компонента, следует:

  1. Создать объект класса Keymap для компонента класса JTextPane.

    Например:

    JTextPane textPane;
    ....
    Keymap keymap = textPane.addKeymap("MyKeymap", 
                             textPane.getKeymap());
  2. Создать объект класса Action и установить для него действие, описанное в классе DefaultEditorKit.

    Например:

    Action action = getActionByName(DefaultEditorKit.downAction);
  3. Создать объект класса KeyStroke и установить для него значение ключа акселератора.

    Например:

    KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_N, 
                           Event.CTRL_MASK);
  4. Установить связь между созданным действием и ключем акселератором.

    Например:

    keymap.addActionForKeyStroke(key, action);

Класс StyleConstants предоставляет набор методов, позволяющих определять или устанавливать значения для атрибутов форматирования.

Набор атрибутов форматирования может быть создан как объект одного из следующих классов:

  • SimpleAttributeSet.
  • AttributeSet.
  • MutableAttributeSet.

Например:

...SimpleAttributeSet[] attrs = new 
       SimpleAttributeSet[stringForPane.length +1];
// Создание набора атрибутов:
  attrs[0] = new SimpleAttributeSet();   
  StyleConstants.setFontFamily(attrs[0], "SansSerif");     
	// Установка значения атрибута
  StyleConstants.setFontSize(attrs[0], 12);
  attrs[1] = new SimpleAttributeSet(attrs[0]);
  StyleConstants.setFontSize(attrs[1], 14); 	
  StyleConstants.setBold(attrs[1], true);
  // Добавление строки в документ с заданным набором 
  // атрибутов (defaultStyleDocument1 переменная 
  // класса, наследуемого от DefaultStyleDocument)
  defaultStyleDocument1.insertString( 
                  defaultStyleDocument1.length, 
                  string1, 
                  attrs[1]);
Александр Демьяненко
Александр Демьяненко

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

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

Добрый день!

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

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

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

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