Spec-Zone .ru
спецификации, руководства, описания, API
|
События колеса мыши уведомляют, когда колесо на мыши вращается. Для получения информации о слушании других событий от нажатия мыши, таких как щелчки, видят, Как Записать Слушателю Мыши. Для получения информации о слушании перетащенных мышью событий см., Как Записать Слушателю Движения мыши. Не у всех мышей есть колеса и, в этом случае, события колеса мыши никогда не сгенерированы. Нет никакого способа программно обнаружить, оборудуется ли мышь колесом мыши.
Альтернативно, используйте соответствие MouseAdapter
class AWT, который реализует MouseWheelListener
интерфейс, чтобы создать a MouseWheelEvent
и переопределите методы для определенных событий.
Обычно не необходимо реализовать слушателя колеса мыши, потому что колесо мыши используется прежде всего для того, чтобы прокрутить. Области прокрутки автоматически регистрируют слушателей колеса мыши, которые реагируют на колесо мыши соответственно.
Однако, чтобы создать пользовательский компонент, который будет использоваться в области прокрутки, Вы, возможно, должны настроить ее прокрутку поведения â определенно, Вы, возможно, должны были бы установить блочные инкременты и модуль. Для текстовой области, например, прокручивая один модуль означает прокручивать одной строкой текста. Блочный инкремент обычно прокручивает всю "страницу", или размер области просмотра. Для получения дополнительной информации см.
Чтобы генерировать события колеса мыши, курсор должен быть по компоненту, зарегистрированному, чтобы прислушаться к событиям колеса мыши. Тип прокрутки, которая происходит, также WHEEL_UNIT_SCROLL
или WHEEL_BLOCK_SCROLL
, зависимая платформа. Количество, которое прокручивает колесо мыши, является также зависимой платформой. И тип и количество прокрутки могут быть установлены через панель управления мыши для платформы.
Следующий пример демонстрирует события колеса мыши.
Вывод от 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); } ... }
Хотя MouseWheelListener
имеет только один метод, у него есть соответствующий адаптер class — MouseAdapter
. Эта возможность позволяет приложению иметь только один адаптер экземпляр class для компонента, чтобы управлять всеми типами событий от указателя мыши.
Метод | Цель |
---|---|
mouseWheelMoved (MouseWheelEvent) | Вызванный, когда колесо мыши поворачивается. |
Метод | Цель |
---|---|
|
Возвращает тип прокрутки, которая будет использоваться. Возможные значения WHEEL_BLOCK_SCROLL и WHEEL_UNIT_SCROLL , и определяются собственной платформой. |
|
Возвращает число меток, колесо мыши было повернуто. Если колесо мыши, повернутое к пользователю (вниз) значение, положительно. Если колесо мыши, повернутое далеко от пользователя значение, отрицательно. |
|
Возвращает число модулей, которые должны быть прокручены на метку. Это всегда - положительное число и только допустимо, если тип прокрутки MouseWheelEvent.WHEEL_UNIT_SCROLL . |
|
Возвращает положительные или отрицательные модули, чтобы прокрутить для текущего события. Это только допустимо, когда тип прокрутки MouseWheelEvent.WHEEL_UNIT_SCROLL . |
Следующая таблица приводит примеры то колесо мыши использования слушатели.
Пример | Где Описано | Примечания |
---|---|---|
MouseWheelEventDemo |
Этот раздел | Отчеты все события колеса мыши, которые происходят в пределах текстовой области, чтобы демонстрировать обстоятельства, при которых запускаются события колеса мыши. |