下面列出了java.awt.event.MouseWheelListener#mouseWheelMoved() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void handleMouseWheelEvent(MouseWheelEvent evt, MouseWheelListener delegate) {
if (scrollpane.isWheelScrollingEnabled() &&
evt.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL)
{
mouseWheelMoved(evt);
evt.consume();
} else {
delegate.mouseWheelMoved(evt);
}
}
/**
* Called when the mouse wheel is moved.
* If CTRL key is down, modify current zoom ratio accordingly, otherwise
* forward the wheel event to proper container (JScrollPane usually).
*
* @param e the mouse wheel event
*/
@Override
public void mouseWheelMoved (MouseWheelEvent e)
{
// CTRL is down?
if (e.isControlDown()) {
double ratio = zoom.getRatio();
if (e.getWheelRotation() > 0) {
ratio /= factor;
} else {
ratio *= factor;
}
zoom.setRatio(ratio);
} else {
// Forward event to some container of the component?
Container container = component.getParent();
while (container != null) {
if (container instanceof JComponent) {
JComponent comp = (JComponent) container;
MouseWheelListener[] listeners = comp.getMouseWheelListeners();
if (listeners.length > 0) {
for (MouseWheelListener listener : listeners) {
listener.mouseWheelMoved(e);
}
return;
}
}
container = container.getParent();
}
}
}
/**
* Redispatch a {@link MouseWheelEvent} to the real {@link MouseWheelListener MouseWheelListeners}
*/
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
// Create an altered event to redispatch
if (scrollAmount != 0) {
e = createScrollAmountEvent(e);
}
// Redispatch the event to original MouseWheelListener
for (MouseWheelListener mwl : realListeners) {
mwl.mouseWheelMoved(e);
}
}
/**
* Called when the mouse wheel is moved.
* If CTRL key is down, modify current zoom ratio accordingly, otherwise
* forward the wheel event to proper container (JScrollPane usually).
*
* @param e the mouse wheel event
*/
@Override
public void mouseWheelMoved (MouseWheelEvent e)
{
// CTRL is down?
if (e.isControlDown()) {
double ratio = zoom.getRatio();
if (e.getWheelRotation() > 0) {
ratio /= factor;
} else {
ratio *= factor;
}
zoom.setRatio(ratio);
} else {
// Forward event to some container of the component?
Container container = component.getParent();
while (container != null) {
if (container instanceof JComponent) {
JComponent comp = (JComponent) container;
MouseWheelListener[] listeners = comp.getMouseWheelListeners();
if (listeners.length > 0) {
for (MouseWheelListener listener : listeners) {
listener.mouseWheelMoved(e);
}
return;
}
}
container = container.getParent();
}
}
}