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); } }