Java MouseWheelListener get mouse wheel position

Description

Java MouseWheelListener get mouse wheel position

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;

import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Main extends JPanel implements MouseWheelListener {
  JTextArea textArea = new JTextArea();
  JScrollPane scrollPane = new JScrollPane(textArea);
  public Main() {
    super(new BorderLayout());
    textArea.setEditable(false);//from   ww  w  . ja v a  2 s  .  c o  m
    
    scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    scrollPane.setPreferredSize(new Dimension(400, 250));
    add(scrollPane, BorderLayout.CENTER);
    textArea.append("scroll mouse, mouse");
    
    textArea.setCaretPosition(textArea.getDocument().getLength());
    
    textArea.addMouseWheelListener(this);

    setPreferredSize(new Dimension(450, 350));
    setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
  }

  public void mouseWheelMoved(MouseWheelEvent e) {
    int notches = e.getWheelRotation();
    if (notches < 0) {
      System.out.println("Mouse wheel moved UP " + -notches + " notch(es)"); 
    } else {
      System.out.println("Mouse wheel moved DOWN " + notches + " notch(es)");
    }
    if (e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) {
      System.out.println("    Scroll type: WHEEL_UNIT_SCROLL");
      System.out.println("    Scroll amount: " + e.getScrollAmount() + " unit increments per notch");
      System.out.println("    Units to scroll: " + e.getUnitsToScroll() + " unit increments");
      System.out.println("    Vertical unit increment: "+ scrollPane.getVerticalScrollBar().getUnitIncrement(1) + " pixels" );
    } else { // scroll type == MouseWheelEvent.WHEEL_BLOCK_SCROLL
       System.out.println("    Scroll type: WHEEL_BLOCK_SCROLL");
       System.out.println("    Vertical block increment: " + scrollPane.getVerticalScrollBar().getBlockIncrement(1) + " pixels");
    }
  }
  public static void main(String[] args) {
    JFrame frame = new JFrame("MouseWheelEventDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JComponent newContentPane = new Main();
    newContentPane.setOpaque(true); // content panes must be opaque
    frame.setContentPane(newContentPane);

    frame.pack();
    frame.setVisible(true);
  }
}



PreviousNext

Related