След: Создание GUI С JFC/Swing
Урок: Пишущие Слушатели События
Раздел: Реализующие Слушатели для Обычно Обрабатываемых Событий
Как Записать Слушателю Каре
Домашняя страница > Создание GUI С JFC/Swing > Пишущие Слушатели События

Как Записать Слушателю Каре

События каре имеют место, когда каре — курсор, указывающий на точку вставки — в текстовом компоненте, перемещается или когда выбор в текстовом компоненте изменяется. Текстовый компонентный документ может инициировать события каре, когда он вставляет или удаляет текст, например. Можно присоединить слушателя каре экземпляра любого JTextComponent подкласс с addCaretListener метод.


Отметьте: альтернативный способ обнаружить изменения каре состоит в том, чтобы присоединить слушателя непосредственно объекта каре непосредственно, а не текстового компонента, который управляет каре. Каре запускает события изменения (не события каре), таким образом, Вы должны были бы записать слушателю изменения, а не слушателю каре.

Вот код обработки событий каре из вызванного приложения TextComponentDemo:

...
//where initialization occurs
CaretListenerLabel caretListenerLabel =
    new CaretListenerLabel("Caret Status");
...
textPane.addCaretListener(caretListenerLabel);
...
protected class CaretListenerLabel extends JLabel
                                   implements CaretListener
{
    ...
    //Might not be invoked from the event dispatching thread.
    public void caretUpdate(CaretEvent e) {
        displaySelectionInfo(e.getDot(), e.getMark());
    }

    //This method can be invoked from any thread.  It 
    //invokes the setText and modelToView methods, which 
    //must run in the event dispatching thread. We use
    //invokeLater to schedule the code for execution
    //in the event dispatching thread.
    protected void displaySelectionInfo(final int dot,
                                        final int mark) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                if (dot == mark) {  // no selection
                    ...
                }
            });
        }
    }
}

Отметьте: caretUpdate метод, как гарантируют, не вызовут в диспетчеризирующем событие потоке. Использовать любые методы в caretUpdate то обновление GUI, специальная обработка обязана гарантировать, что они выполняются на диспетчеризирующем событие потоке. Можно сделать это, обертывая код внутри a Runnable и вызов SwingUtilities.invokeLater на этом Runnable.

Можно найти ссылку к исходному файлу для TextComponentDemo в примере индексируют для того, чтобы использовать Компоненты Swing. Поскольку дискуссия об аспекте слушателя каре программы видит Прислушивание к Изменениям Каре и Выбора в текстовых Компонентных Функциях.

API Слушателя Каре

Интерфейс CaretListener

Поскольку CaretListener имеет только один метод, у него нет никакого соответствующего адаптера class.

Метод Цель
caretUpdate (CaretEvent) Вызванный, когда каре в слушаемом компонент перемещается или когда выбор в слушаемом компонентные изменения.

Класс CaretEvent

Метод Цель
интервал getDot () Возвращает текущее расположение каре. Если текст выбирается, каре отмечает один конец выбора.
интервал getMark () Возвращает другой конец выбора. Если ничто не выбирается, значение, возвращенное этим методом, равно значению, возвращенному getDot. Отметьте, что точка, как гарантируют, не будет меньше чем метка.
Возразите getSource ()
(в java.util.EventObject)
Возвращает объект, который запустил событие.

Примеры то Каре Использования Слушатели

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

Пример Где Описано Примечания
TextComponentDemo Прислушивание к Изменениям Каре и Выбора Использует метку слушателя, чтобы вывести на экран состояние выбора и каре.

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Как Записать Слушателю Действия
Следующая страница: Как Записать Слушателю Изменения



Spec-Zone.ru - all specs in one place