1.直接上代码

import java.awt. * ;
import java.awt.event. * ;
import java.awt.geom. * ;
import javax.swing. * ;
public class FPanel extends javax.swing.JPanel {private Dimension preferredSize = new Dimension( 400 , 400 ); private Rectangle2D[] rects = new Rectangle2D[ 50 ]; public static void main(String[] args) { JFrame jf = new JFrame( " test " ); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setSize( 400 , 400 ); jf.add( new JScrollPane( new FPanel())); jf.setVisible( true ); } public FPanel() { // generate rectangles with pseudo-random coords for ( int i = 0 ; i < rects.length; i ++ ) { rects[i] = new Rectangle2D.Double(Math.random()*.8 , Math.random()*.8 , Math.random()*.2 , Math.random()*.2 ); } // mouse listener to detect scrollwheel events addMouseWheelListener( new MouseWheelListener() {public void mouseWheelMoved(MouseWheelEvent e) {updatePreferredSize(e.getWheelRotation(), e.getPoint()); } }); }private void updatePreferredSize( int wheelRotation, Point stablePoint) { double scaleFactor = findScaleFactor(wheelRotation); scaleBy(scaleFactor); Point offset = findOffset(stablePoint, scaleFactor); offsetBy(offset); getParent().doLayout();} private double findScaleFactor( int wheelRotation) { double d= wheelRotation*1.08 ; return (d > 0 ) ? 1/d : -d; } private void scaleBy( double scaleFactor) { int w = ( int ) (getWidth()*scaleFactor);int h = ( int ) (getHeight()*scaleFactor);preferredSize.setSize(w, h); } private Point findOffset(Point stablePoint, double scaleFactor) {int x = ( int ) (stablePoint.x*scaleFactor)-stablePoint.x; int y = ( int ) (stablePoint.y*scaleFactor)-stablePoint.y;return new Point(x, y); } private void offsetBy(Point offset) { Point location = getLocation();setLocation(location.x - offset.x, location.y - offset.y);} public Dimension getPreferredSize() { return preferredSize;}private Rectangle2D r = new Rectangle2D.Float();public void paint(Graphics g) { super.paint(g); g.setColor(Color.red);int w = getWidth(); int h = getHeight(); for (Rectangle2D rect : rects) {r.setRect(rect.getX()*w,rect.getY()*h,rect.getWidth()*w,rect.getHeight()*h);((Graphics2D) g).draw(r); } }
}

2.运行效果

java swing 实现鼠标滑轮聚焦缩放图片相关推荐

  1. jQuery实现点击图片放大,鼠标滑轮控制缩放

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  2. js 以鼠标为中心缩放图片

    原理 使用的绘制方法 void ctx.drawImage(image, dx, dy, dWidth, dHeight); 参数说明: dx image的左上角在目标canvas上 X 轴坐标. d ...

  3. java swing 禁用鼠标事件_Java学习笔记:swing中树控件,设置树节点的图标,按钮美化,鼠标事件,禁止鼠标双击...

    树控件: JTree:声明树控件 声明树的节点: DefaultMutableTreeNode dd=new DefaultMutableTreeNode("传入树节点名称"); ...

  4. java swing 图片容器_Java Swing中两种设置背景图(容器图片)

    在java swing中需要为容器添加图片,或者背景图片. 提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel 1.JPanel(源代码) package oo; import ja ...

  5. Unity2D 实现UGUI滚动鼠标滑轮以鼠标位置点为中心缩放图片

    先放参考文章: Unity3d UGUI以鼠标位置点为中心缩放图片(含项目源码)https://blog.csdn.net/qq_33789001/article/details/117749837 ...

  6. 鼠标滚动缩放图片效果

    前段时间本人在做项目时,做了一个鼠标滚动缩放图片效果,图片支持多个,多个图片循环缩放,花了点时间整理了下,把它贴出来,与大家分享下,在ie6.0,ie7.0,firefox都测试过,没有问题. < ...

  7. java 等比缩放图片_java处理图片按比例缩放功能

    java中的图片按比例缩放功能 1. 按固定长宽进行缩放 /* * 图片缩放,w,h为缩放的目标宽度和高度 * src为源文件目录,dest为缩放后保存目录 */ public static void ...

  8. Python OpenCV:利用滚动条移动图片,利用鼠标缩放图片

    Python OpenCV:利用滚动条移动图片,利用鼠标缩放图片 一.实现目标 二.实现背景 三.实现方法 四.运行环境 五.运行代码 六.运行结果 七.不足 八.参考 一.实现目标   在OpenC ...

  9. java实现按比例缩放图片技巧

    java实现按比例缩放图片技巧 案例需求: 根据指定的文件名称,用户给定的缩放比例来完成缩放图片 思路分析: 1.文件对象File 2.BufferedImage构造器: 图像数据的访问的缓冲器 3. ...

最新文章

  1. linux下的jsp
  2. vs系列自带的localdb数据库当做数据库
  3. 2021-11-13SystemStringBuliding
  4. 理解zookeeper选举机制
  5. html5下拉列表多行显示不出来,为什么我这个代码的效果显示不出来?我要显示的是鼠标经过选项出现下拉菜单栏!求大神提点!!!...
  6. 6大分布式定时任务对比
  7. Bower介绍及用法(转)
  8. shiro 同时实现url和按钮的拦截_Shiro是如何拦截未登录请求的(一)
  9. 【iOS 开发】基础控件:UISwitch
  10. Java 实现邮箱验证
  11. html一像素等于多少px,pt和px换算(一pt等于多少像素)
  12. Unity ML-Agents 之 平衡球案例的实现整理(内含实现步骤)
  13. 直流侧电力有源滤波器滤除谐波干扰的原理及方案
  14. 2022-10-24 dell R740服务器 安装显卡 NVIDIA Tesla P40 24GB
  15. 读博士学位失败率有多高
  16. apache kafka技术分享系列(目录索引)
  17. 菜单导航间竖杠竖线间隔符 | 效果的CSS实现
  18. 前端LayUI框架快速上手详解(一)
  19. react classnames
  20. 遇到一个杀不死的僵尸进程

热门文章

  1. ssh连接Linux机器一直让输入密码
  2. 珍视友情、珍爱生命、珍重和平—读余秋雨散文作品感悟
  3. 科学数学工程工具MATLAB软件2023a中文版下载安装,MATLAB特色
  4. 如何查看app的报错日志?(模拟器和真机)
  5. 数学分析 - 隐函数
  6. java common log使用,log4j和commons.logging日志记录的使用方法
  7. Linux 4.19.111 供电(power supply )子系统
  8. uniCloud 云函数
  9. 如何炒股,炒股的最简单方法
  10. 网络模拟环境 NS-2仿真软件简介