科技行者

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

知识库

知识库 安全导航

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

使用Java实现全屏鼠标取色

  • 扫一扫
    分享文章到微信

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

使用Java实现全屏鼠标取色

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

关键字: 鼠标取色 全屏 java

  • 评论
  • 分享微博
  • 分享邮件
相信大家都知道一个叫做"好色鬼"的软件吧,它可以取得你的 鼠标位置的RGB值,这在我们编写图形用户界面程序时是非常的有用,比如设置组件的前景色与背景色等...... ?F1RiEszX  
UuS8Lc  
今天就用Java写一个简单版的取色软件吧,虽然很简陋,但是我们的软件是绿色的而且功能并不逊色,那就开始吧! =# im[N  
程序运行时的界面如下所示:(此时我的鼠标就放在标题栏) Ccr_G-  
屏幕截图
J}mt,p/V  
MvnFSMU  
要实现屏幕截图,最主要的 要属下面的三个类了: W /Y}S2  
java.awt.Color; L6n"%.;  
java.awt.MouseInfo; Hj <S1jHx{  
java.awt.Robot; $o-a~Na.c  
_+r<e!6  
取色步骤也是相当的简单,不信?那你跟着做: h|>z~$by  
1: 得到鼠标在屏幕中的具体位置,这就要用MouseInf这个类,具体的方法是 ,7~<zuFV  
Point point; 4 x:` y  
point = MouseInfo.getPointerInfo().getLocation(); PiQPLJ  
2: 得到第一步取得的点的像素,要实现这个功能,要分两个步骤 1d<q OPS  
    1) 定义一个Robot对象(Robot robot = new Robot();) '%*hmGKV  
    2) 用定义的Robot对象得到某点的像素值(robot.getPixelColor(point.x, point.y);) ~g  57  
3: 取得该像素的RGB,这个在Color类中就有相应的函数,这里我不在叙述. xk"+k0Q^  
H U30{(F d  
具体的代码如下:  uG%to  
Copy code
import javax.swing.JFrame; S"M)7%ey<V  
import javax.swing.JPanel; LI$VE#zYq  
import javax.swing.JLabel; KX.NDM&3P  
y%c@DTmX  
import java.awt.Color; 0XF39d#  
import java.awt.MouseInfo; SF_bpio  
import java.awt.Point; )}kzK@Q98  
import java.awt.Toolkit; _8zO.c7  
import java.awt.Dimension; YEy[VQ'd  
import java.awt.Robot; 6F}IdYz{'4  
import java.awt.Graphics; u/HMc#MF  
S%]D5 /[  
import java.awt.event.MouseMotionAdapter; H"h:a3tV  
import java.awt.event.MouseEvent; HyQT-~V3K  
W/'0>J9O  
public class PickColor extends JFrame implements Runnable I>5ADIKp  
{ #;hEkc.<K  
    private Robot robot; `*=$N*=)  
    private Color color = new Color(0, 0, 0); 6AOSn4  
    private Point point; dcA@gd^  
    private JPanel pane = new JPanel(); L3TX}qEq(  
    private JLabel label = new JLabel(); 5/p))(>zt  
    7tj(!M/v  
    public PickColor(String title) '4K*98GA  
    { ^ERg0K9+v  
        super(title); RE%a]^ %[  
        4d VNb|q)  
        label.setHorizontalAlignment(JLabel.CENTER); ik "893 U  
        getContentPane().add(pane, "Center"); sW>Nyu  
        getContentPane().add(label, "South"); Sxb^D^s c  
        //getContentPane().addMouseMotionListener(new PickColorMouesMotionListener()); NW3x9Ket  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pB76E)N (  
        setSize(200,200); 2oZ(V7!F}  
        display(); !x:`!Fy   
        new Thread(this).start(); 6! SJaXNmi  
    } <Ix(.-rC  
    public static void main(String[] args) )BCP s<IIR  
    { m #!q2A  
        PickColor pc = new PickColor("PickColor"); *9~^Jf6  
    } B09PFtf  
    S(aV,u  
    public void display() ~9QBN%,'  
    { : Rx</Rt  
        Toolkit toolkit = Toolkit.getDefaultToolkit(); Yu$uP E)j  
        Dimension dim = toolkit.getScreenSize(); 0-Ml=n?f  
        setLocation fFuyc  
        ( t_w_@jZB  
            (dim.width - getWidth()) / 2, q7{lf$  
            (dim.height - getHeight()) / 2 tgu'+kU{  
        ); JF5FuYVA  
        setVisible(true); a?}tg;'B  
    } A`,)PJWOY;  
    653pr|K  
    // 对整个屏幕进行取色 ZL((# e  
    public void run() pmi UHlY  
    { qB>F9f'3  
        while(true) 7V/2b</  
        { yS]~"@  
            try z/B?KRZ3  
            { &QF7Z j  
                robot = new Robot(); b6zCg'2'  
                point = MouseInfo.getPointerInfo().getLocation(); -dP^ GA#+  
                color = robot.getPixelColor(point.x, point.y); up3.ogP4I  
                pane.setBackground(color); g8=#,Y'M  
                label.setText("RGB(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")"); E?6=3~  
                Thread.sleep(10); j/ kFf  
            } xF| -g^ s  
            catch(Exception e) ^188DCYX  
            { 5:Gk B .%b  
                e.printStackTrace(); i^ `.fBjw_  
            } onw}xaC3<  
        } WAQ[X%csl  
    } nGal)  
} Aj"5)";6ts  
!KWJ)(  
`^u&:}a  
_6h5&9(  
5ol.+ e 1  
上面的代码是对全屏幕取色,如果只想对swing绘制的窗体里面的组件进行取色,可以用下面的方法实现 )#ViV ;4S|  
1: 在构造函数中加入下面的代码 <fBfew 4  
getContentPane().addMouseMotionListener(new PickColorMouesMotionListener()); .vsQE*I  
2: 添加下面的内部类 Ue1*  
Copy code
class PickColorMouesMotionListener extends MouseMotionAdapter D7jg  
{ F@I|iA0~Q  
    PickColorMouesMotionListener() Z"l: r!@#  
      { :/V7L?{6I  
      } as<#3EJ.  
      public void mouseMoved(MouseEvent e) Q"8= nK  
      { ">8607CvV  
          try 4ld!=TFX  
        { Z b~>;L  
            robot = new Robot(); $yK|tQhH?  
            point = MouseInfo.getPointerInfo().getLocation(); q#Mq)r}  
            color = robot.getPixelColor(point.x, point.y); <9LFX'**  
            pane.setBackground(color); e,[RW $Y  
            label.setText("RGB(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")"); Q$A[L-  
            Thread.sleep(10); 8 an9;~^  
        } S7|O~ho  
        catch(Exception ex) B`G =o:/  
        { uG vFsv/s  
            ex.printStackTrace(); aL(Avp  
        } zJ*ip|  
    } ?,s,r P7N  
} Xn,_!w-<;  
查看本文来源 >
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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