科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用Java实现全屏鼠标取色

使用Java实现全屏鼠标取色

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

使用Java实现全屏鼠标取色

作者:swings 来源:赛迪网技术社区 2007年11月16日

关键字: 鼠标取色 全屏 java

  • 评论
  • 分享微博
  • 分享邮件
今天就用Java写一个简单版的取色软件吧,虽然很简陋,但是我们的软件是绿色的而且功能并不逊色,那就开始吧! VQH|ENB@  
程序运行时的界面如下所示:(此时我的鼠标就放在标题栏) ;T~$wJ  
屏幕截图
(;,@j  
=N;Ny7_h  
要实现屏幕截图,最主要的 要属下面的三个类了: 'k^?mO(u@  
java.awt.Color; "F)(NP.  
java.awt.MouseInfo; d u4!{2  
java.awt.Robot; 5'lj:dP  
RfP/~0,4t  
取色步骤也是相当的简单,不信?那你跟着做: Og XqfP  
1: 得到鼠标在屏幕中的具体位置,这就要用MouseInf这个类,具体的方法是 Fb0Slmz @  
Point point; ;!v;@d9  
point = MouseInfo.getPointerInfo().getLocation(); lcohqyc  
2: 得到第一步取得的点的像素,要实现这个功能,要分两个步骤 0WsKV0-W?  
    1) 定义一个Robot对象(Robot robot = new Robot();) ~Q54)  
    2) 用定义的Robot对象得到某点的像素值(robot.getPixelColor(point.x, point.y);) '7FS);]N  
3: 取得该像素的RGB,这个在Color类中就有相应的函数,这里我不在叙述. 3M(D&~4  
4 f B 9D  
具体的代码如下: ^&4T1#`sD  
Copy code
import javax.swing.JFrame; MBb~,k  
import javax.swing.JPanel; Ny MKb'  
import javax.swing.JLabel; QN8^M   
N=o~/%Wz|  
import java.awt.Color; Ux5qDp3{D}  
import java.awt.MouseInfo; E<@)u8  
import java.awt.Point; |pzeFm  
import java.awt.Toolkit; O%&PE[iP  
import java.awt.Dimension; DSPD`m['  
import java.awt.Robot; Y+`ns  
import java.awt.Graphics; im[JpA  
MXa@{M&  
import java.awt.event.MouseMotionAdapter; 7/q:Or{  
import java.awt.event.MouseEvent; @yWTFUb  
uf<k6|-}fJ  
public class PickColor extends JFrame implements Runnable 0},ac7l  
{ x  y!?  
    private Robot robot; KnLqUnkW)  
    private Color color = new Color(0, 0, 0); Q"m?8~;r  
    private Point point; f>J`-  
    private JPanel pane = new JPanel(); w52Y}A $  
    private JLabel label = new JLabel(); mb_I&43y  
    m`S@v"9j@  
    public PickColor(String title) j3@&/;W9>  
    { ER9@NV!  
        super(title); hX!Z13L  
        .b-m)k/"  
        label.setHorizontalAlignment(JLabel.CENTER); W>[rM,ENv  
        getContentPane().add(pane, "Center"); $zlk@3=O  
        getContentPane().add(label, "South"); k1p 8}lP:  
        //getContentPane().addMouseMotionListener(new PickColorMouesMotionListener()); C/Fk oF*  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ucSjSjD7X  
        setSize(200,200); b#* d=&~%  
        display(); n.e\sT4(i  
        new Thread(this).start(); 5`#>^\p9  
    } kB> StW  
    public static void main(String[] args) UP}h:=,  
    { G#pU,oL]1K  
        PickColor pc = new PickColor("PickColor"); LUKOxD8\  
    } K)XY 1  
    uGKK1jXz  
    public void display() _S@6+pgVi  
    { jy 2o#M*9  
        Toolkit toolkit = Toolkit.getDefaultToolkit(); ry2p'hhk  
        Dimension dim = toolkit.getScreenSize(); |PP*.I(u  
        setLocation {?z e  
        ( rzJS`Q0  
            (dim.width - getWidth()) / 2, nRZVX).q  
            (dim.height - getHeight()) / 2 mZw!={A8]  
        ); &>d}1Y\9 i  
        setVisible(true); h&{!OcH  
    } xrcV~  
    d}dWO  
    // 对整个屏幕进行取色 qW5}8G3U  
    public void run() <Cz|Bp70  
    { w(.EW/6?7  
        while(true) /\@QK_`m$  
        { [j2B%eY3@"  
            try Y+7~8FHf  
            { oYNa*  
                robot = new Robot(); V?Z3n;&  
                point = MouseInfo.getPointerInfo().getLocation(); &>\JPU(]  
                color = robot.getPixelColor(point.x, point.y); O' y,=~D7  
                pane.setBackground(color); 607knO? %g  
                label.setText("RGB(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")"); ~q2S]90NXa  
                Thread.sleep(10); 9}=AyPW08`  
            } sE[]r;Bq[  
            catch(Exception e) /4Z kGH{\  
            { T\) 8=~  
                e.printStackTrace(); "s")'Bt  
            } 6xPJ$3=  
        } } f NYBZh  
    } ?E3Mmqi<~e  
} Fy,=$=,  
'!3}G   
EFTp  
7eHh~m~  
z~? nC[x  
上面的代码是对全屏幕取色,如果只想对swing绘制的窗体里面的组件进行取色,可以用下面的方法实现 MRv yS::(  
1: 在构造函数中加入下面的代码 t -RP~pC'  
getContentPane().addMouseMotionListener(new PickColorMouesMotionListener()); .G:[n9L z  
2: 添加下面的内部类 ho Tr$0X  
Copy code
class PickColorMouesMotionListener extends MouseMotionAdapter l9vuif+Xo  
{ ]D["/tli  
    PickColorMouesMotionListener() uB|p_C'|  
      { Ol JU:%2  
      } xjJf1 c  
      public void mouseMoved(MouseEvent e) c+7XZg+IW  
      { ]qFIED  
          try Q)2-.bpe  
        { d3ktv*Q|  
            robot = new Robot(); c;"bmZ>C  
            point = MouseInfo.getPointerInfo().getLocation(); 7I?c*$ i  
            color = robot.getPixelColor(point.x, point.y); 1%973W3'+x  
            pane.setBackground(color); j\4.R,P Y  
            label.setText("RGB(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")"); !0Z fNq  
            Thread.sleep(10); xJX}`^r  
        } {qd(TGD{  
        catch(Exception ex) VW?QRe Y  
        { # !!MQTk  
            ex.printStackTrace(); z4^q5t0;s2  
        } *Vi[vk)  
查看本文来源 >
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章