创建鼠标滚轮监听事件MouseWheelListener,MouseWheelEvent e,
成都做网站、网站建设、外贸营销网站建设的开发,更需要了解用户,从用户角度来建设网站,获得较好的用户体验。成都创新互联公司多年互联网经验,见的多,沟通容易、能帮助客户提出的运营建议。作为成都一家网络公司,打造的就是网站建设产品直销的概念。选择成都创新互联公司,不只是建站,我们把建站作为产品,不断的更新、完善,让每位来访用户感受到浩方产品的价值服务。
int num=e.getWheelRotation(); 这个用来得到滚轮转动的方向与单位数,正数表示向下旋转,负数表示向上旋转,绝对值表示转动的单位。
然后你再改变图片的大小和位置,然后 refresh();
建议用JLabel来显示图片,然后在鼠标的滚轮事件中改变JLabel的大小和位置就OK了,具体的自己去实现。
看来得给你个例子啊!关键点1:按比例缩放图片;2:this.repaint();之前写错了不好意思啊
public class Anniu extends JFrame implements MouseWheelListener {
private static final long serialVersionUID = 1L;
JLabel jl = null;
ImageIcon image = new ImageIcon("F://12.jpg");
public Anniu() {
}
public void init() {
setLayout(null);
jl = new JLabel(image);
setSize(800, 600);
jl.setBounds(300, 200, 200, 200);
add(jl);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseWheelListener(this);
setVisible(true);
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
// TODO Auto-generated method stub
int num = e.getWheelRotation();
int x = (this.getWidth() - jl.getWidth()) / 2;
int y = (this.getHeight() - jl.getHeight()) / 2;
int width=jl.getWidth()+ 2 * num;
int height=jl.getHeight()+ 2 * num;
jl.setIcon(new ImageIcon( image.getImage().getScaledInstance(width, height, Image.SCALE_SMOOTH))); //重点1:按所给的大小来设置图片,不管图片有多大,总是全图显示,可能导致失真!你可以加一个大小限制,超过图片大小了则不再放大。
jl.setBounds(x + num, y + num, width, height);
this.repaint(); //刷新屏幕
}
public class MouseClickEvent extends JFrame{
public MouseClickEvent() {
Container container = getContentPane();
container.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent arg0) {
int buttonFlag = arg0.getButton();
switch (buttonFlag) {
case MouseEvent.BUTTON1:
System.out.println("释放的是鼠标左键!\n");
break;
case MouseEvent.BUTTON2:
System.out.println("释放的是鼠标滚轮!\n");
break;
case MouseEvent.BUTTON3:
System.out.println("释放的是鼠标右键!\n");
break;
}
}
@Override
public void mousePressed(MouseEvent arg0) {
int buttonFlag = arg0.getButton();
switch (buttonFlag) {
case MouseEvent.BUTTON1:
System.out.println("按下的是鼠标左键!\n");
break;
case MouseEvent.BUTTON2:
System.out.println("按下的是鼠标滚轮!\n");
break;
case MouseEvent.BUTTON3:
System.out.println("按下的是鼠标右键!\n");
break;
}
}
@Override
public void mouseExited(MouseEvent arg0) {
System.out.println("光标移出应用程序窗口了!\n");
}
@Override
public void mouseEntered(MouseEvent arg0) {
System.out.println("光标进入应用程序窗口了!\n");
}
@Override
public void mouseClicked(MouseEvent arg0) {
int buttonFlag = arg0.getButton();
switch (buttonFlag) {
case MouseEvent.BUTTON1:
System.out.println("点击的是鼠标左键!\n");
break;
case MouseEvent.BUTTON2:
System.out.println("点击的是鼠标滚轮!\n");
break;
case MouseEvent.BUTTON3:
System.out.println("点击的是鼠标右键!\n");
break;
}
int clickCount = arg0.getClickCount();
System.out.println("点击次数为"+clickCount+"\n");
}
});
}
public static void main(String[] args) {
MouseClickEvent testFrame = new MouseClickEvent();
testFrame.setTitle("鼠标点击事件测试程序!");
testFrame.setVisible(true);
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
testFrame.setBounds(0, 0, 500, 400);
}
}
可以采用以下代码实现来滚动java滚动条滚动的速度
[java] view plaincopy
span style="font-family: Arial, Helvetica, sans-serif;"//虽然比较短,但还是分享下吧。。。。就当是个随笔吧~/span
[java] view plaincopy
//设置滚动面板的滚动速度
[java] view plaincopy
JScrollPane.getVerticalScrollBar().setUnitIncrement(10);
[java] view plaincopy
[java] view plaincopy
//鼠标滑轮滚动事件
this.btn.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
String str = (e.getWheelRotation() 0)?"上" : "下";
System.out.println(str);
}
});
回答是肯定可以的:
鼠标在窗口外面,滚动鼠标滚轮,其实还是可以控制JScollPane的滚动
思路 :顶层的JFrame窗口能够获得焦点,也就是窗口在前端显示状态。
那么当滚轮滚动的时候,就会触发鼠标滚动事件。
在事件响应里面。重新设置JSCollPane的(JSCollBar)滚动条的值就可以实现了。
代码参考:
附件下载
建议: 一般而言没有必要在窗口外面控制JSCollPane滚动。。。
效果如图
Java提供了两个事件侦听接口用来管理鼠标移动和键盘动作,分别是MouseMotionListener和KeyListener,可以用它们来捕捉鼠标和键盘。
1)类KeyMonitor,是一个JPanel的扩展类,用来显示捕捉到的按键信息;
2)类MouseMonitor,也是一个JPanel的扩展类,用来显示到的鼠标移动信息;
3)入口类Main,用匿名类的方式实现了真正的监听接口;
PS:Java提供的这两个侦听器都有很大的限制,鼠标监听只有在鼠标位于Java程序所在的窗口范围之内才能有效,而键盘监听限制更严格,仅当Java程序成为当前的活动窗口时才有效。单纯用Java来实现全屏幕、所有程序的鼠标和键盘活动是不可行的。