科技行者

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

知识库

知识库 安全导航

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

使用Java实现全屏鼠标取色

  • 扫一扫
    分享文章到微信

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

使用Java实现全屏鼠标取色

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

关键字: 全屏 鼠标取色 java

  • 评论
  • 分享微博
  • 分享邮件
相信大家都知道一个叫做"好色鬼"的软件吧,它可以取得你的 鼠标位置的RGB值,这在我们编写图形用户界面程序时是非常的有用,比如设置组件的前景色与背景色等......  .iiFvQ  
xw^r rty>  
今天就用Java写一个简单版的取色软件吧,虽然很简陋,但是我们的软件是绿色的而且功能并不逊色,那就开始吧! 1 t < :V]  
程序运行时的界面如下所示:(此时我的鼠标就放在标题栏) Q8<=$L/  
屏幕截图
BX]+ / *  
u*^BY*` M  
要实现屏幕截图,最主要的 要属下面的三个类了: t Q BA D6  
java.awt.Color; ">N R]bs  
java.awt.MouseInfo; -BOqpo,@e<  
java.awt.Robot; ]"(YP  
& rl._"  
取色步骤也是相当的简单,不信?那你跟着做: }}Rd tM  
1: 得到鼠标在屏幕中的具体位置,这就要用MouseInf这个类,具体的方法是 iFp`T*\43  
Point point; U5\+%Y_I~  
point = MouseInfo.getPointerInfo().getLocation(); HAL-[G|05  
2: 得到第一步取得的点的像素,要实现这个功能,要分两个步骤 cL.<.)H"  
    1) 定义一个Robot对象(Robot robot = new Robot();) vb e>m('  
    2) 用定义的Robot对象得到某点的像素值(robot.getPixelColor(point.x, point.y);) ?6zg?e  
3: 取得该像素的RGB,这个在Color类中就有相应的函数,这里我不在叙述. eB~V>Q#L  
EqTQvb}}J  
具体的代码如下: Gw''\8tiL  
Copy code
import javax.swing.JFrame; tc)baXuo  
import javax.swing.JPanel; n >$]2VsQ  
import javax.swing.JLabel; L+)LJ <!  
}<s"9z4Q  
import java.awt.Color; &U8c"5  
import java.awt.MouseInfo; _x ]^A; 5z  
import java.awt.Point; r"|/gp#h'  
import java.awt.Toolkit; 9eN1B{Ch($  
import java.awt.Dimension; B`\7]D  
import java.awt.Robot; ?t7Ma,IUA  
import java.awt.Graphics; iJL;[O,F  
Z;M:&7-  
import java.awt.event.MouseMotionAdapter; 5j8w/.~  
import java.awt.event.MouseEvent; CU .,  
IN%xj(zr  
public class PickColor extends JFrame implements Runnable yYc~CHyRn  
{ ?E`KRcm$ r  
    private Robot robot; c% F+vz1R=  
    private Color color = new Color(0, 0, 0); H$UQ/`  
    private Point point; C 0s2z=)My  
    private JPanel pane = new JPanel(); lk7S-.G  
    private JLabel label = new JLabel(); 8C|}67'  
    >L\ 's  
    public PickColor(String title) 50ays0xBI  
    { E Y |B(G  
        super(title); 1(2_#Aq  
        =79Ylx]~T  
        label.setHorizontalAlignment(JLabel.CENTER); ^9fai1@J-  
        getContentPane().add(pane, "Center"); $|~2Nk1[  
        getContentPane().add(label, "South"); F'rcvXg /  
        //getContentPane().addMouseMotionListener(new PickColorMouesMotionListener()); /U;M  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); LV&[HL  
        setSize(200,200); ]?~,.,#  
        display(); C/lHuw  
        new Thread(this).start(); P=7}`X/a|  
    } MJ="5ZA55  
    public static void main(String[] args) q@v12PX,  
    { Kj&L  
        PickColor pc = new PickColor("PickColor"); G2MB:Q6  
    } [@] `SQ.m  
    W>Qa/SAu  
    public void display() ZxnQ[osH  
    { o.rulA+V  
        Toolkit toolkit = Toolkit.getDefaultToolkit(); .xHR1 Z<h  
        Dimension dim = toolkit.getScreenSize(); 6:0R.p+'  
        setLocation 0qjgY  
        ( }`ErRg"-^  
            (dim.width - getWidth()) / 2, 9:+ o`W e  
            (dim.height - getHeight()) / 2 %/_?XzW  
        ); t5T`&~Tw  
        setVisible(true); 7` 0Nqk  
    } A@0Is4B  
    hmhiW82  
    // 对整个屏幕进行取色 v,-kVHf g  
    public void run() *N)(Xvc;1G  
    { =!Xt9c+a  
        while(true) +yJ}$)  
        { 2VGrWSK  
            try $@, bh  
            { iAeZAc1e4  
                robot = new Robot(); 8OQ{#dd  
                point = MouseInfo.getPointerInfo().getLocation(); M@in~5  
                color = robot.getPixelColor(point.x, point.y); 9ph<FZc  
                pane.setBackground(color); yj[@E"<l-  
                label.setText("RGB(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")"); nNH8odAt  
                Thread.sleep(10); do>ySed  
            } L8t< F&  
            catch(Exception e) q2q4sVir  
            { a )1|}'  
                e.printStackTrace(); ;6>%|aB9  
            } r$Q4AnnB7  
        } Dd9` 5(4T  
    } C3`yOku%  
} t-"(^Ph  
19=26{M l  
k;y Q8  
Mu ;i(W !  
m^wK,Ai {  
上面的代码是对全屏幕取色,如果只想对swing绘制的窗体里面的组件进行取色,可以用下面的方法实现 y8EAdz]*}  
1: 在构造函数中加入下面的代码 r,|{IG: S  
getContentPane().addMouseMotionListener(new PickColorMouesMotionListener()); M\|Bwe  
2: 添加下面的内部类 ,i84yw$(  
Copy code
class PickColorMouesMotionListener extends MouseMotionAdapter +Xqc 1m  
{ 1hcoyWD  
    PickColorMouesMotionListener() kru& ^q  
      { Tux4S3]J  
      } Q!q D/`(0  
      public void mouseMoved(MouseEvent e) ?as4 J@ [I  
      { Z)j@(xu  
          try `}]R73-ex  
        { 5bzsnJh  
            robot = new Robot(); 6WAtTitx#  
            point = MouseInfo.getPointerInfo().getLocation(); QvR@Hr[fN  
            color = robot.getPixelColor(point.x, point.y); EF&^/M  
            pane.setBackground(color); Du77UN'0  
            label.setText("RGB(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")"); .W,26 /  
查看本文来源 l>
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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