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

Как Записать Слушателю Колеса мыши

События колеса мыши уведомляют, когда колесо на мыши вращается. Для получения информации о слушании других событий от нажатия мыши, таких как щелчки, видят, Как Записать Слушателю Мыши. Для получения информации о слушании перетащенных мышью событий см., Как Записать Слушателю Движения мыши. Не у всех мышей есть колеса и, в этом случае, события колеса мыши никогда не сгенерированы. Нет никакого способа программно обнаружить, оборудуется ли мышь колесом мыши.

Альтернативно, используйте соответствие MouseAdapter class AWT, который реализует MouseWheelListener интерфейс, чтобы создать a MouseWheelEvent и переопределите методы для определенных событий.

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

Однако, чтобы создать пользовательский компонент, который будет использоваться в области прокрутки, Вы, возможно, должны настроить ее прокрутку поведения ⠀” определенно, Вы, возможно, должны были бы установить блочные инкременты и модуль. Для текстовой области, например, прокручивая один модуль означает прокручивать одной строкой текста. Блочный инкремент обычно прокручивает всю "страницу", или размер области просмотра. Для получения дополнительной информации см. Реализацию Опытного прокруткой Клиента в, Как Использовать страницу Областей прокрутки.

Чтобы генерировать события колеса мыши, курсор должен быть по компоненту, зарегистрированному, чтобы прислушаться к событиям колеса мыши. Тип прокрутки, которая происходит, также WHEEL_UNIT_SCROLL или WHEEL_BLOCK_SCROLL, зависимая платформа. Количество, которое прокручивает колесо мыши, является также зависимой платформой. И тип и количество прокрутки могут быть установлены через панель управления мыши для платформы.

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


Попробуйте это: 
  1. Нажмите кнопку Launch, чтобы работать, MouseWheelEventDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.Запускает приложение MouseWheelEventDemo
  2. Переместите курсор через текстовую область.
  3. Поверните колесо мыши далеко от Вас. Вы будете видеть одно или более событий колеса мыши в направление.
  4. Поверните колесо мыши в противоположном направлении. Вы будете видеть события колеса мыши во вниз направление.
  5. Попытайтесь изменить свое колесо мыши прокрутка поведения панель управления мыши Вашей системы, чтобы видеть, как вывод изменяется. Недопустимо должны быть перезапускать демонстрационный пример, чтобы видеть, что изменения вступают в силу.

Вывод от MouseWheelEventDemo для системы, которая использует инкременты модуля для его колеса мыши, мог бы смотреть следующим образом:

javax.swing.JTextArea: Mouse wheel moved UP 1 notch(es)
    Scroll type: WHEEL_UNIT_SCROLL
    Scroll amount: 3 unit increments per notch
    Units to scroll: -3 unit increments
    Vertical unit increment: 16 pixels

Количество прокрутки, возвращенное getScrollAmount метод, указывает, сколько модулей будет прокручено и всегда представляет положительное число. Модули, чтобы прокрутить, возвращенный getUnitsToScroll метод, положительны, прокручивая вниз и отрицательный, прокручивая. Число пикселей для вертикального модуля получается из вертикальной полосы прокрутки, используя getUnitIncrement метод. В предыдущем примере, прокручивая мышь вертят одну метку, вверх должен привести к текстовой области, прокручивающей вверх 48 пикселей (3x16).

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

javax.swing.JTextArea: Mouse wheel moved UP 1 notch(es)
    Scroll type: WHEEL_BLOCK_SCROLL
    Vertical block increment: 307 pixels

Вертикальный блочный инкремент получается из вертикальной полосы прокрутки, используя getBlockIncrement метод. В этом случае прокручивая колесо мыши вверх одна метка означает, что текстовая область должна прокрутить вверх 307 пикселей.

Найдите код демонстрационного примера в MouseWheelEventDemo.java файл. Следующий фрагмент кода связывается с обработкой событий колеса мыши:

public class MouseWheelEventDemo ... implements MouseWheelListener ... {
    public MouseWheelEventDemo() {
        //where initialization occurs:
        //Register for mouse-wheel events on the text area.
        textArea.addMouseWheelListener(this);
        ...
    }

    public void mouseWheelMoved(MouseWheelEvent e) {
       String message;
       int notches = e.getWheelRotation();
       if (notches < 0) {
           message = "Mouse wheel moved UP "
                        + -notches + " notch(es)" + newline;
       } else {
           message = "Mouse wheel moved DOWN "
                        + notches + " notch(es)" + newline;
       }
       if (e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) {
           message += "    Scroll type: WHEEL_UNIT_SCROLL" + newline;
           message += "    Scroll amount: " + e.getScrollAmount()
                   + " unit increments per notch" + newline;
           message += "    Units to scroll: " + e.getUnitsToScroll()
                   + " unit increments" + newline;
           message += "    Vertical unit increment: "
               + scrollPane.getVerticalScrollBar().getUnitIncrement(1)
               + " pixels" + newline;
       } else { //scroll type == MouseWheelEvent.WHEEL_BLOCK_SCROLL
           message += "    Scroll type: WHEEL_BLOCK_SCROLL" + newline;
           message += "    Vertical block increment: "
               + scrollPane.getVerticalScrollBar().getBlockIncrement(1)
               + " pixels" + newline;
       }
       saySomething(message, e);
    }
    ...
}

API Слушателя Колеса Мыши

Интерфейс MouseWheelListener

Хотя MouseWheelListener имеет только один метод, у него есть соответствующий адаптер class — MouseAdapter. Эта возможность позволяет приложению иметь только один адаптер экземпляр class для компонента, чтобы управлять всеми типами событий от указателя мыши.

Метод Цель
mouseWheelMoved (MouseWheelEvent) Вызванный, когда колесо мыши поворачивается.

Класс MouseWheelEvent

Метод Цель
интервал getScrollType () Возвращает тип прокрутки, которая будет использоваться. Возможные значения WHEEL_BLOCK_SCROLL и WHEEL_UNIT_SCROLL, и определяются собственной платформой.
интервал getWheelRotation () Возвращает число меток, колесо мыши было повернуто. Если колесо мыши, повернутое к пользователю (вниз) значение, положительно. Если колесо мыши, повернутое далеко от пользователя значение, отрицательно.
интервал getScrollAmount () Возвращает число модулей, которые должны быть прокручены на метку. Это всегда - положительное число и только допустимо, если тип прокрутки MouseWheelEvent.WHEEL_UNIT_SCROLL.
интервал getUnitsToScroll () Возвращает положительные или отрицательные модули, чтобы прокрутить для текущего события. Это только допустимо, когда тип прокрутки MouseWheelEvent.WHEEL_UNIT_SCROLL.

Примеры, Которые Используют Слушателей Колеса Мыши

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

Пример Где Описано Примечания
MouseWheelEventDemo Этот раздел Отчеты все события колеса мыши, которые происходят в пределах текстовой области, чтобы демонстрировать обстоятельства, при которых запускаются события колеса мыши.

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

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