Java中关于MouseWheelListener的鼠标滚轮事件

Java中JPanel面板中对鼠标滚轮事件的处理。

一:MouseWheelListener接口

MouseWheelListener接口中只有一个void mouseWheelMoved(MouseWheelEvent e)方法,此方法是在鼠标滚轮滚动的时候调用。所以要重写这个方法。
我们使用MouseWheelEvent此类中的public int getWheelRotation()方法。

二:public int getWheelRotation()

如果鼠标滚轮向上/远离用户旋转,则为负值,如果鼠标滚轮朝向用户向下旋转,则为正值

代码演示:主要实现对JPanel容器,和JFrame窗口的放大和缩小。这里采用的方法就是按钮滚轮的方式

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MouseWheelListener01 extends JFrame implements MouseWheelListener{
	public static void main(String[] args) {
		new MouseWheelListener01();
	}
	int h = 300;
	int w = 300;
	JPanel j = new JPanel();

	// 构造器
	MouseWheelListener01(){
    super("放缩滚轮");
	this.add(j);
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	this.setSize(h,w);
	this.setVisible(true);
    this.addMouseWheelListener(this);  // 添加鼠标滚轮事件
	}

    //利用滚轮事件将窗口放大和缩小
    public void mouseWheelMoved(MouseWheelEvent e) {
	// 如果鼠标滚轮向上旋转或远离用户,则为负值,如果鼠标滚轮向下旋转或朝向用户旋转,则为正值
    if(e.getWheelRotation()==1){
		h = h + 15;
		w = w + 15;
        this.setSize(h,w);
        this.validate();
        System.out.println("滑轮向前。。。。");
   }

    if(e.getWheelRotation()==-1){
		h = h - 15;
		w = w -15;
    this.setSize(h,w);
    this.validate();
    System.out.println("滑轮向后....");
  }
 }
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt.accessibility.AccessibleActionAdapter.class org.eclipse.swt.accessibility.AccessibleActionEvent.class org.eclipse.swt.accessibility.AccessibleActionListener.class org.eclipse.swt.accessibility.AccessibleAdapter.class org.eclipse.swt.accessibility.AccessibleAttributeAdapter.class org.eclipse.swt.accessibility.AccessibleAttributeEvent.class org.eclipse.swt.accessibility.AccessibleAttributeListener.class org.eclipse.swt.accessibility.AccessibleControlAdapter.class org.eclipse.swt.accessibility.AccessibleControlEvent.class org.eclipse.swt.accessibility.AccessibleControlListener.class org.eclipse.swt.accessibility.AccessibleEditableTextAdapter.class org.eclipse.swt.accessibility.AccessibleEditableTextEvent.class org.eclipse.swt.accessibility.AccessibleEditableTextListener.class org.eclipse.swt.accessibility.AccessibleEvent.class org.eclipse.swt.accessibility.AccessibleHyperlinkAdapter.class org.eclipse.swt.accessibility.AccessibleHyperlinkEvent.class org.eclipse.swt.accessibility.AccessibleHyperlinkListener.class org.eclipse.swt.accessibility.AccessibleListener.class org.eclipse.swt.accessibility.AccessibleTableAdapter.class org.eclipse.swt.accessibility.AccessibleTableCellAdapter.class org.eclipse.swt.accessibility.AccessibleTableCellEvent.class org.eclipse.swt.accessibility.AccessibleTableCellListener.class org.eclipse.swt.accessibility.AccessibleTableEvent.class org.eclipse.swt.accessibility.AccessibleTableListener.class org.eclipse.swt.accessibility.AccessibleTextAdapter.class org.eclipse.swt.accessibility.AccessibleTextAttributeEvent.class org.eclipse.swt.accessibility.AccessibleTextEvent.class org.eclipse.swt.accessibility.AccessibleTextExtendedAdapter.class org.eclipse.swt.accessibility.AccessibleTextExtendedListener.class org.eclipse.swt.accessibility.AccessibleTextListen
以下是Java实现鼠标滚轮同步的代码示例: ```java import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class MouseWheelSyncDemo extends JFrame implements MouseWheelListener { private static final long serialVersionUID = 1L; private JTextArea textArea1, textArea2; private JScrollPane scrollPane1, scrollPane2; public MouseWheelSyncDemo() { super("Mouse Wheel Sync Demo"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 300); textArea1 = new JTextArea(); textArea2 = new JTextArea(); textArea1.setPreferredSize(new Dimension(200, 200)); textArea2.setPreferredSize(new Dimension(200, 200)); textArea1.addMouseWheelListener(this); textArea2.addMouseWheelListener(this); scrollPane1 = new JScrollPane(textArea1); scrollPane2 = new JScrollPane(textArea2); JPanel panel = new JPanel(new BorderLayout()); panel.add(scrollPane1, BorderLayout.WEST); panel.add(scrollPane2, BorderLayout.EAST); getContentPane().add(panel); setVisible(true); } public void mouseWheelMoved(MouseWheelEvent e) { JScrollPane scrollPane = (JScrollPane) e.getComponent().getParent(); int units = e.getUnitsToScroll(); JScrollBar scrollBar = scrollPane.getVerticalScrollBar(); int oldValue = scrollBar.getValue(); int newValue = oldValue - units * scrollBar.getBlockIncrement(); scrollBar.setValue(newValue); } public static void main(String[] args) { new MouseWheelSyncDemo(); } } ``` 该示例创建了两个文本区域和两个滚动面板,当鼠标滚轮事件发生时,通过获取事件源的父组件(即滚动面板),计算出滚动条的新位置,并将其设置为滚动条的值,从而实现了两个文本区域的鼠标滚轮同步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值