SWing放大镜

按键精灵-一维数组的运用 一维数组的运用实例 实验网址:http://zy.anjian.com/lab/content_06.html Dim 坐标x(8), 坐标y(8) 坐标x(0) = 610 : 坐标y(0) = 568 坐标x(1) = 669 : 坐标y(1) = 531 坐标x(2) = 748 : 坐标y(2) = 489 坐标x(3) = 686 : 坐标y(3) = 607 坐标x(4) = 751 : 坐标y(4) = 570 坐标x(5) = 818 : 坐标y(5) = 529 坐标x(6) = 756 阅读详情
 
package Magnifier;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Magnifier extends JFrame
{
    private Container container = getContentPane();

    
    private int setCoordinateX;

    private int setCoordinateY;

    private int absoluteCoordinateX;

    private int absoluteCoordinateY;

    private int relativeCoordinateXWhenMousePressed;

    private int relativeCoordinateYWhenMousePressed;

    //标记鼠标是否按下。如果按下则为true,否则为false
    private boolean mousePressedNow;

    // 放大镜尺寸
    private int magnifierSize = 200;

    //放大镜内容面板
    private MagnifierPanel magnifierPanel = new MagnifierPanel(magnifierSize);

    //这个窗体就是放大镜 你可以自己更改这个窗体..
    public Magnifier()
     {
       setUndecorated(true); // 这个就是窗口的边缘 false的话就失效果了
       setResizable(false); 
       container.add(magnifierPanel);
       addMouseListener(new MouseFunctions());
       addMouseMotionListener(new MouseMotionFunctions());
       updateSize(magnifierSize);
       this.setVisible(true);
     }

    public static void main(String arg[])
     {
    // JFrame 
     Magnifier magnifier = new Magnifier();
     magnifier.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
    
    public void updateSize(int magnifierSize)
     {
        magnifierPanel.setMagnifierSize(magnifierSize + 100);
        setSize(magnifierSize + 100, magnifierSize + 100);
        validate();
     }

    private class MouseFunctions extends MouseAdapter
     {
    public void mousePressed(MouseEvent e)
     {
        if (e.getClickCount() == 1)
         {// 如果鼠标左键点了一下,说明按住了窗体
         mousePressedNow = true;
         relativeCoordinateXWhenMousePressed = e.getX();
         relativeCoordinateYWhenMousePressed = e.getY();
         }
     }

    public void mouseReleased(MouseEvent e)
     {
         mousePressedNow = false;
     }
    }

    private class MouseMotionFunctions extends MouseMotionAdapter
     {
     public void mouseDragged(MouseEvent e)
     {
      if (mousePressedNow == true)
      {// 如果此时鼠标按下了,说明在拖拽窗体
       absoluteCoordinateX = Magnifier.this
          .getLocationOnScreen().x
           + e.getX();
       absoluteCoordinateY = Magnifier.this
        .getLocationOnScreen().y
        + e.getY();
       setCoordinateX = absoluteCoordinateX
        - relativeCoordinateXWhenMousePressed;
       setCoordinateY = absoluteCoordinateY
            - relativeCoordinateYWhenMousePressed;
       magnifierPanel.setMagnifierLocation(setCoordinateX,
            setCoordinateY);
       setLocation(setCoordinateX, setCoordinateY);
      }
     }
     }
}

class MagnifierPanel extends JPanel
{
    private Image screenImage;

    private int magnifierSize;

    private int locationX;

    private int locationY;

    private Robot robot;

     public MagnifierPanel(int magnifierSize)
     {
       try
          {
            robot = new Robot();
          }
       catch (AWTException e){
       }
     
       screenImage = robot.createScreenCapture(new Rectangle(0, 0, Toolkit
         .getDefaultToolkit().getScreenSize().width, Toolkit
         .getDefaultToolkit().getScreenSize().height));
      
      this.magnifierSize = magnifierSize;
     }

    public void setMagnifierLocation(int locationX, int locationY)
     {
    //X坐标
     this.locationX = locationX;
    //Y坐标
     this.locationY = locationY;
     repaint();        // 注意重画控件
     }

    public void setMagnifierSize(int magnifierSize)
     {
     this.magnifierSize = magnifierSize;
     }

    public void paintComponent(Graphics g)
     {
     super.paintComponent((Graphics2D) g);
    // 关键处理代码
     g.drawImage(
       screenImage,                 // 要画的图片
       0,                    // 目标矩形的第一个角的x坐标     
       0,                    // 目标矩形的第一个角的y坐标
       magnifierSize,                 // 目标矩形的第二个角的x坐标
       magnifierSize,                 // 目标矩形的第二个角的y坐标
       locationX + (magnifierSize / 4),     // 源矩形的第一个角的x坐标
       locationY + (magnifierSize / 4),    // 源矩形的第一个角的y坐标
       locationX + (magnifierSize / 4 * 3),     // 源矩形的第二个角的x坐标
       locationY + (magnifierSize / 4 * 3),     // 源矩形的第二个角的y坐标
       this
     );
   }
}

JAVA图形界面效果--放大镜 JAVA中常见的图形界面效果-放大镜,很经典实用的一个放大镜效果 立即下载

相关推荐

QMT与通达信代码实战:从预警到交易的自动化实现

本文详细介绍了如何利用QMT量化交易平台与通达信软件实现从预警到交易的全自动化。通过读取通达信预警生成的板块文件,QMT策略可自动执行买卖指令,有效解决手动交易滞后问题。文章提供了完整的代码框架、核心原理拆解及实盘注意事项,帮助投资者构建高效、纪律性的自动化交易系统。

ansible6ops的博客 648

java swing 截图 放大镜

【代码】java swing 截图 放大镜。

znn1980的博客 261

Qt加载百度地图详细流程(附带报错解决方法)

一篇文章看懂Qt如何加载出百度地图......

qq_60018273的博客 1603

基于Swing 实现放大镜效果

一:概述 本文代码在JDK6u20版本调试通过,通过对像素的抓取处理和利用TexturePaint对BufferedImage对象的支持 从而实现对任何JComponent组件的放大镜效果。 二:前期准备工作 1.将传入的JComponent对象转换为BufferedImage对象做为源图像,有下面代码完成,关 键步骤在于从BufferedI...

weixin_33744854的博客 204

Windows Server 2019整机备份与异机还原实战:从虚拟机到物理机的完整迁移指南

本文详细介绍了Windows Server 2019整机备份与异机还原的实战操作,涵盖从虚拟机到物理机的完整迁移流程。通过环境准备、备份策略设计、具体操作步骤及迁移后优化等内容,帮助用户实现系统环境的无缝迁移,特别适用于服务器硬件升级、数据中心迁移等场景。

weixin_30555125的博客 131

课题申报新手入门必备指南!利用AI辅助搞定 6大关键部分,高效提升申报成功率(附AI提示词)

以下是我(或团队)与本课题相关的已有基础:【如:承担过的公开课、校本教研活动、教学改革实践、课程建设、区级/校级课题、教学反思积累等】请你完成以下任务:1)判断哪些内容与本课题的研究目标和内容具有直接或间接关联;以下是我当前的研究设想(可能比较笼统):【填写你的研究想法 / 教学困惑 / 初步设想】,请你帮我完成以下任务:1)先判断该设想中隐含的核心研究问题是什么;以下是我目前拟定的研究目标,请你从课题评审视角进行校正:【逐条粘贴你已有的研究目标】,请你帮我:1)判断每个目标是否具体、清晰、可评估;

智能AI让学术科研更容易 917

Java:实现屏幕放大镜(附带源码)

Java:实现屏幕放大镜(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 2048

YOLO11改进策略【独家融合改进】| EfficientViMBlock + LGAG + DySample

通过学习采样来学习上采样DySample。

Limiiiing的博客 362

java放大镜_Java写的屏幕放大镜

/***文件名:Magnifier.java*OS:GNU/LinuxUbuntu6.10*IDE:eclipse3.2*JDK版本:1.6.0*版本:0.1*作者:88250*邮箱&MSN:DL88250@gmail.com*QQ:845765*/importjava.awt.*;importjava.awt.event.*;importjavax.swing...

weixin_39990558的博客 438

C# USB通信实现

在C#中,我们可以利用.NET框架提供的类库和API来实现与USB设备的通信。本文将介绍如何使用C#进行USB通信,并提供相应的代码示例。以上就是使用C#进行USB通信的基本过程。通过以上代码示例,你可以实现与USB设备的简单通信,具体的实现方式和细节根据你的实际需求进行调整和扩展。命名空间,该命名空间包含了与串口通信相关的类和方法。选择需要通信的USB设备,然后使用。步骤二:获取可用的USB设备列表。首先,在你的C#项目中引入。步骤三:打开USB端口。步骤六:关闭USB端口。步骤一:引入命名空间。

PixelProX的博客 4381

微信小程序 - 引入并使用 Fly.js 请求库(超级详细的教程及运行示例)提供 Fly.js 源码源文件下载,贴心的配置示例及注释,优雅快速的发起 http 网络请求

fly.js请求库官方教程文档,微信小程序封装fly.js请求,在小程序/mpvue中使用flyio发起网络请求的方法,微信小程序中如何使用flyio封装网络请求,微信小程序中如何使用flyio封装网络请求,最好的教程,fly最好的文档教程,微信小程序使用fly接口请求框架,引入fly.js报错,微信小程序中如何使用flyio封装网络请求,微信小程序引入Fly.js请求库,如何在fly中配置请求/响应拦截器,如何在微信小程序中优雅地发送异步请求,请求/响应拦截器,微信小程序-引入并使用F

🏆 前端领域优质创作者 5608

Java写的屏幕放大镜[zz]

导读: 写了个放大镜,初步对Java的GUI编程有了点概念:-) /** * 文件名:Magnifier.java * OS:GNU/Linux Ubuntu 6.10 * IDE:eclipse 3.2 * JDK 版本: 1.6.0 * 版本:0.1 * 作者:88250 * 邮箱&MSN:DL88250@gmail.com * QQ: 845765 */ import java.awt.*

1151

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java应用---Design for Coder(集截屏,取色,放大,画图)为一体

记得以前闲来无事的时候做过一个java小应用,将截屏,取色,放大镜,画图功能集成在一起的       小应用软件。采用的是Swing技术。笔者其实是个菜鸟,但是对java的Swing还是比较喜欢的。                每个人都有这样的思维,或许说习惯更为恰当吧!我们在学习完一门语言的基本语法之后       总是“迫不及待”的想了解这门语言到底能够做什么?这种“冲动”使我们真正的

LCore的专栏 4233

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java 取色器_Arava: 用 swing 写一个取色器

备哥以前发我了一个小工具,TakeColor 取色器。来复刻一个吧。分析一下:顶部是菜单,左侧框显示当前鼠标所在的颜色(下面显示当前坐标和颜色值,默认RGB),中间框显示鼠标周围区域,右侧显示取色的列表(按alt+c)取色。下面一行是颜色值,并且可以切换不同的模式。打开调色盘会显示底部的颜色框和调节滑块。TakeColor v1.0先来实现一个简单的屏幕取色。鼠标的移动监听器中的 moved 和 ...

weixin_31831459的博客 503

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java应用---Design for LCore(集截屏,取色,放大,画图,托盘)为一体(含源码)

前言 翻翻自己的U盘,里面的咋东西实在太多了。清理下,无意中发现了以前自己做的小工具。将截屏,取色,放大镜,画图功能集成在一起 的小应用软件。采用的是Swing技术。笔者其实是个菜鸟,但是对java的Swing还是比较喜欢的。 每个人都有这样的思维,或许说习惯更为恰当吧!我们在学习完一门语言的基本语法之后总是“迫不及待”...

angfeng4948的博客 154

Java写的屏幕放大镜

/** * 文件名:Magnifier.java * OS:GNU/Linux Ubuntu 6.10 * IDE:eclipse 3.2 * JDK 版本: 1.6.0 * 版本:0.1 * 作者:88250 * 邮箱&MSN:DL88250@gmail.com * QQ: 845765 */import java.awt.*;import java.awt.event.*;import j

478

Java世界的透明

Java 中有许多的 参数可以将组件 透明的现实给用户!这一点我认为做的比较好 首先:组件的透明 : 在Java 的组件中除过 JLabel 和 Label  本身的 一些条件限制所以他们本身就被设置成为 不绘制边框的Java组件。最近在做一些 有关Java Swing方面的东西,虽然说现在的JavaSwing   已经不怎么流行啦 但是 有关于 JavaSwing 中

CONLONG 的专栏 1183

Java:实现局部图像放大(附带源码)

Java:实现局部图像放大(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 894

java swing视频教程下载_JAVA Swing 教程

JAVA Swing 教程,包含所有练习源码和讲解教程!初级界面篇练习01分解颜色练习02画板练习03帧练习04画布练习05密码验证界面练习06对话框练习07滚动条练习08边框练习09单选框图片浏览器练习10卡片布局管理器练习11边界布局管理器练习12进程条练习13列表框和组合框练习14选项卡练习15菜单练习16菜单快捷键练习17模式对话框练习18网格布局管理器练习19复选框练习20单选框练习21...

weixin_30045055的博客 401
上一篇: JAVA MD5加密算法
下一篇: IPhone开发环境搭建全过程
RuanJava
博客等级 码龄17年 13粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值